simplified template madness with dependent types