changed constructors around a bit