generic functions in separate header