Updated the rest of abstract support classes to be generic