Abstracted support classes a bit to make work easier