anchor.diff:  
   // TODO : OnCursorChange should be part of the gridview itself.
   procedure TMinApp.OnCursorChange( Sender : TObject );
  -  begin
  -    tg.smudge;
  +  begin tg.smudge;
     end;
    
  
positive.code:     cur.Attach(rsOutln, 'nid');
      cur.canHideRows := true; cur.hideFlag := 'hidden';
      cur.OnMarkChanged := self.OnCursorChange;
  
      // TODO: eventually i'll build a little lazarus-like RAD thing
      // to manage these components as data rather than code.
      typeMenu := TDBMenu.Create(self);
      typeMenu.rs := dbc.query('SELECT * FROM kinds ORDER BY kind');
      typeMenu.key := 'knd';
      typeMenu.OnSave := self.OnChooseType;
      pageMenu := TDBMenu.Create(self);
      pageMenu.rs := dbc.query(
  	     'SELECT nid, val AS page FROM node NATURAL JOIN kinds '+
  	     'WHERE kind=:k', ['Page']);
      pageMenu.key := 'nid';
      vsplit := kvm.ymax - 1;
      tg := TDbTreeGrid.Create(dbc);
      with tg do begin
        x := 1; y := 2; h := vsplit-y; w := 18; datacursor := cur
      end;
      ed := TEditor.Create(self);
      ed.x := 20; ed.y := 2; ed.w := kvm.width - 21;
      ed.h := vsplit-ed.y-1;  //  why is this different than tg?
      b4 := TB4VM.Create(self);
      mb := ZInput.default(1, kvm.ymax - 1, kvm.xmax-2, kvm.xmax-2 );
  
      _views.append(ed);
      _views.append(tg);
      _views.append(mb);
  
      if ParamCount = 1 then
        if not ed.Load( ParamStr( 1 )) then
  	fail( utf8encode('unable to load file: ' +
  			 utf8decode(ansistring(paramstr( 1 )))))
        else ed.status := 'welcome to minneron.'
      else ok
    end;
  
negative.code:       procedure OnChooseType(val:variant);
        procedure LoadPage(pg:TStr);
        procedure OnToggle;
        procedure ShellOn;  procedure ShellOff;
      end;
  
  procedure TMinApp.Init; { 1/2 }
    var vsplit : integer = 0;
    begin
      // TODO: eventually i'll build a little lazarus-like RAD thing
      // to manage these components as data rather than code.
  
      { sqlite / nodak database connection }
      ndk := undk.open('minneron.sdb');
      dbc := (ndk as TNodakRepo).dbc;
  
      { split between outline and editor }
      vsplit := kvm.ymax - 1;
  
      { the editor widget }
      ed := TEditor.Create(self);
      ed.x := 20; ed.y := 2; ed.w := kvm.width - 21;
      ed.h := vsplit-ed.y-1;  //  why is this different than tg?
  
      { the outliner widget }
      rsOutln := dbc.query(
  	 'SELECT olid,nid,kind,node,depth,collapsed,hidden,leaf '+
  	 'FROM outline');
  