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);
end

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

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

