Simplified directory structure, fleshed out some of the abstract classes