function injection overhaul