wired path enumeration to make sure we can always track down the tree structure
simplified the dynamic task calculations

updated this to use the enumerated path structure:
it saves us from cascading recursive queries;
some of these things should be broken out to their own functions;
wired the project updates to fire after dynamic task updates