refactored to use namespacing instead of static classes