Updated classes to be much more semantic.