refactor: passing taskComplete as callback instead of wrapping into anon func