implemented data layer and business layer based on primaryobjects.com article, still need to sort through bugs and refactor for tree based structure