Changed task.execute to task.invoke 

Execute doesn't fire off the dependencies, but invoke means a task won't fire more than once. To make it work in the context of guard, we have to reenable the task we want to run and all it's dependencies, every time.

There is probably a better way to do this.