extracted category impl to avoid linker conflicts