refactored core to use underscore notation for private and protected properties/methods