cleaned up constructors