module pattern, mixin pattern, and safe-scope constructors