improve constructors
improve unit test