remove mandatory name cruft
mark some arguments as const
seperate header for utility macros