working on. split out classes.
working on.
working on.