added a few more internal classes for use later