Refactoring namespaces
Expanding abstraction and unit testing