return objects with custom constructors - put convenience functions on prototypes; closes #22