Still functioning, made a few OO design improvements.