More tests and refactoring some contructors to make creating object a
little easier