add type parameter