do this in a more structured way
better namespacing