refactored on prototypes