function u=construct(s,sizes_in)
	fg=fig(s); figure(fg); clf;
	set(gcf,'Name',s.opts.name);
	hpanel = uipanel('title',s.opts.title,'bordertype','line');
	%hpanel = uigridcontainer('v0','GridSize',[1,1]);
	hedit = uicontrol('parent',hpanel,'style','edit','string',s.opts.init,'horizontalalignment','left');
	%hbtn  = uicontrol('parent',hpanel,'style','pushbutton','string','send');
	set(hedit,'BackgroundColor',get(0,'DefaultAxesColor'));
	set(hedit,'units','normalized','position',[0,0,1,1]);
	%set(hedit,'ToolTipString','Enter a MATLAB expression to evaluate a send.');
	%set(hbtn,'ToolTipString','Press to resend the last entered expression.');

	queue = {};
	u=mkunit(s);
	u.process=@proc;
	u.sizes_out = {[1,1]};
	u.dispose  = @dispose;
	u.starting = @starting;
	u.stopping = @stopping;
	u.get_state = @()get(hedit,'string');
	u.set_state = @(s)set(hedit,'string',s);

	function dispose, delete(hpanel); end
	function starting, set(hedit,'Callback',@send); end
	function stopping, set(hedit,'Callback',[]); end
	function x=proc, x=queue; queue={}; end

	function send(varargin), 
		str=get(hedit,'string');
		fprintf('* esender: evaluating %s\n',str);
		try, queue = [queue, {evalin('base',str)}]; 
		catch fprintf('* esender: ERROR evaluating.\n');
		end
	end
end
