for reducing the amount of call stack