there are also generic constructors