code cleanup: private means, well, private :-)
bringing the creation constraint to the formal generic type mark