inlined methods
changed publics into privates where possible