enhance checkout, add CheckoutTree method
embrace static types
Merge pull request #113 from CMGS/master

enhance checkout, add CheckoutTree method