rough file structure and some base classes