Updates to structure

Abstracted into more granular modules