Reanmed to Generics instead of templates