Object-Oriented JavaScript functionality: Namespaces, Modules and Classes