Created abstract base class to reduce backend redundancy.