rename some functions; move more stuff into the interface; cleanup exception
don't use magic php methods