classes and file IO