the rest of the gui api plus the prototype works now