Major refactor of constructors #28
Closes #32