A base class to build specific gateways on top of