new feature (task dependencies) and a little bit of refactoring