Finer invocation of interact, support for errors, functionality methods need to call errorcb() now