Modular architecture


Closes #15 ; Closes #16 ; Closes #17 ; Closes #11