use less specific type for template