move all to prototypes/defineProperty