modularized all the things
Merged changes