restructure using namespace