Major refactor of constructors #28