class BaseStep implements VariableSpace, StepInterface, LoggingObjectInterface, ExtensionDataInterface {

  @Override
  public void cleanup() {
    for ( ServerSocket serverSocket : serverSockets ) {
      try {

        socketRepository.releaseSocket( serverSocket.getLocalPort() );
        logDetailed(
          BaseMessages.getString( PKG, "BaseStep.Log.ReleasedServerSocketOnPort", serverSocket.getLocalPort() ) );
      } catch ( IOException e ) {
        logError( "Cleanup: Unable to release server socket (" + serverSocket.getLocalPort() + ")", e );
      }
    }

    List<RemoteStep> remoteInputSteps = getRemoteInputSteps();
    if ( remoteInputSteps != null ) {
      cleanupRemoteSteps( remoteInputSteps );
    }

    List<RemoteStep> remoteOutputSteps = getRemoteOutputSteps();
    if ( remoteOutputSteps != null ) {
      cleanupRemoteSteps( remoteOutputSteps );
    }
  }

  public  BaseStep( StepMeta stepMeta, StepDataInterface stepDataInterface, int copyNr, TransMeta transMeta,
                   Trans trans );

}