Refactor function extension to be usable without function object
Move from setTimeout to lazy in queuing