add namespacing and ioc container