moving to more functional Phylesystem class
caching and test refactoring
using refactored tests