Fleshed out the abstract classes.