modularized type creation