Decoupling the grunt task and the logic so i will be reusable outside of grunt
Build the tree recursively
+ tests
code clean
remove unnecessary dependencies