added type creating functionality