make Type more generic