add a filesystem abstraction.
split client and scheduler py