rename template parameter names and add documententation