added better constructors