use TableGatewayInterface instead