reduce function call overhead