Command line app virtual file system bult with abstract factory and composite pattern