adding some modularity, and beginning namespace