using templates not done yet