added Types factory and etc