function u=construct(s,sizes_in)

	u=construct(s.base,sizes_in);
	s0=u.get_state();
	u.sizes_out = [u.sizes_out,size(s0)];
	u.process = mkproc(u.process, nargout(s.base), ...
		u.get_state,s.period);
end

function f=mkproc(g,nout,getst,period)
	k=1;
	f=@proc_nnn;

	function varargout=proc_nnn(varargin)
		varargout=cell(1,nout+1);
		[varargout{1:nout}]=g(varargin{:});
		if k==1, 
			k=period; 
			varargout{nout+1}={getst()};
		else 
			k=k-1; 
			varargout{nout+1}={};
		end
	end
end

