reverse misuse of type parameter, add comments for clarity