Reworking and some new classes.