Redesigned the constructors