macosx: privatise instance variables and resolve class dependencies on internal implementation details