added own caching system
added interchangeable filesystem