refactored prototype
added caching of prototype property access
added unit tests