@Override
  public FluidStack drain(ForgeDirection direction, int maxDrain, boolean doDrain) {
    SocketModule m = getSide(direction);
    SideConfig c = configs[direction.ordinal()];

    if (m.isFluidInterface() && m.canExtractFluid())
      return m.fluidExtract(maxDrain, doDrain, c, this);
    return null;
  }
  @Override
  public int fill(ForgeDirection direction, FluidStack resource, boolean doFill) {
    SocketModule m = getSide(direction);
    SideConfig c = configs[direction.ordinal()];

    if (m.isFluidInterface() && m.canInsertFluid())
      return m.fluidFill(resource, doFill, c, this, direction);
    return 0;
  }