Updated the target to be more flexible, in terms of the new declarative approach that is being created.
Create exceptions, and add topological sorting for targets.
Merge remote-tracking branch 'origin'