error in NewSoftSerial rfid

hi guys, need help in this project

code]
#include <NewSoftSerial.h>
#include <EEPROM.h>

char rfid_data[10];
char rfid_in[10];
int i, a, b, tmp;

NewSoftSerial rfid (10, 255);

void setup()
{
  Serial.begin(9600);
  RFID.begin(2400);
  pinMode(11, OUTPUT);
}

void loop()
{
  Serial.println("1 = Register RFID Card");
  Serial.println("2 = Remove RFID Card");
  Serial.println("3 = Delete EEPROM Database");
  Serial.println("4 = List EEPROM Database");
  Serial.println("5 = Active Mode");
  do
  {
    delay(200);
  } 
  while (Serial.available() <= 0);
  Serial.println();

  switch (Serial.read())
  {
  case '1':
    RegisterCard();
    break;
  case '2':
    RemoveCard();
    break;
  case '3':
    EEPROM.write(0,0);
    Serial.println("Database Erased");
    break;
  case '4':
    ListDatabase();
    break;
  case '5':
    ActiveMode();
    break;
  case '0':
    break;
  default:
    Serial.println("Uknown Input");
  }
  Serial.println();
}


void RegisterCard()
{
  // Read a card
  for (int rs = 0; rs < 11; rs++)
  {
    rfid_data[rs] = '0';
  }
  rfid_data[10] = '\0';

  digitalWrite(11, LOW);
  delay(500);
  do
  {
    delay(200);
  } 
  while (RFID.available() <= 0);

  digitalWrite(11, HIGH);
  delay(500);
  Serial.println("Reading Card");
  rfid_data[0] = RFID.read();
  if (int(rfid_data[0]) == 10)
  {
    for (i = 0; i < 10; i++)
    {
      rfid_data[i] = RFID.read();
    }
    rfid_data[10] = '\0';
  }


  RFID.flush();
  delay(500);
  /*
  digitalWrite(11, LOW);
   delay(500);
   digitalWrite(11, HIGH);
   delay(500);
   */
  Serial.print("Registering Card: ");
  Serial.println(rfid_data);
  // Check if it's in the database
  a = EEPROM.read(0);
  if (a == 0)
  {
    EEPROM.write(0,1);
    for (i = 1; i < 11; i++)
    {
      EEPROM.write(i,rfid_data[i-1]);
    }
    Serial.println("Card Registered in Database Successfully");
    // REMOVE START
    for (i = 0; i < 11; i++)
    {
      rfid_data[i] = '0';
    }
    rfid_data[11] = '\0';
    // REMOVE END
    return;
  }
  if (a == 100)
  {
    Serial.println("100 Cards Reached, Register Failed");
    return;
  }

  for (i = 0; i < a; i++)
  {
    for (b = 1; b < 11; b++)
    {
      rfid_in[b-1] = EEPROM.read((i*10)+b);
    }
    rfid_data[10] = '\0';
    b = 1;
    for (int c = 0; c < 10; c++)
    {
      if (rfid_data[c] == rfid_in[c])
      {
        b++;
      }
    }
    if (b == 10)
    {
      Serial.println("Card Already Exists in Database");
      return;
    }
  }
  // Add to database
  tmp = 0;
  for (int d = (a*10)+1; d < (a*10)+11; d++)
  {
    EEPROM.write(d,rfid_data[tmp]);
    tmp++;
  }
  EEPROM.write(0,a+1);
  Serial.println("Complete");
  return;
}















void ListDatabase()
{
  a = EEPROM.read(0);
  Serial.print("Cards in database: ");
  Serial.println(a);
  if (a == 0)
  {
    Serial.println("Database Empty");
    return;
  }

  for (i = 0; i < a; i++)
  {
    Serial.print("Card ");
    Serial.print(i);
    Serial.print(": ");
    for (b = 1; b < 11; b++)
    {
      Serial.print(EEPROM.read((i*10)+b));
    }
    Serial.println();
  }

  return;
}















void ActiveMode()
{
  // Read a card
  for (int rs = 0; rs < 11; rs++)
  {
    rfid_data[rs] = '0';
  }
  rfid_data[10] = '\0';
  digitalWrite(11, LOW);
  delay(500);
  do
  {
    delay(200);
  } 
  while (RFID.available() <= 0);
  digitalWrite(11, HIGH);
  delay(500);
  Serial.println("Reading Card");
  rfid_data[0] = RFID.read();
  if (int(rfid_data[0]) == 10)
  {
    for (i = 0; i < 10; i++)
    {
      rfid_data[i] = RFID.read();
    }
    rfid_data[10] = '\0';
  }
  Serial.print("Checking Card: ");
  Serial.println(rfid_data);
  // Check if it's in the database
  a = EEPROM.read(0);
  if (a == 0)
  {
    Serial.println("Access Denied!");
    RFID.flush();
    delay(1000);
    digitalWrite(11, LOW);
    delay(500);
    digitalWrite(11, HIGH);
    return;
  }

  for (i = 0; i < a; i++)
  {
    for (b = 1; b < 11; b++)
    {
      rfid_in[b-1] = EEPROM.read((i*10)+b);
    }
    rfid_data[10] = '\0';
    b = 1;
    for (int c = 0; c < 10; c++)
    {
      if (rfid_data[c] == rfid_in[c])
      {
        b++;
      }
    }
    if (b == 10)
    {
      Serial.println("Access Granted!");
      RFID.flush();
      delay(1000);
      digitalWrite(11, LOW);
      delay(500);
      digitalWrite(11, HIGH);
      return;
    }
  }
  Serial.println("Access Denied!");
  RFID.flush();
  delay(1000);
  digitalWrite(11, LOW);
  delay(500);
  digitalWrite(11, HIGH);
  return;
}




void RemoveCard()
{
  // Read a card
  for (int rs = 0; rs < 11; rs++)
  {
    rfid_data[rs] = '0';
  }
  rfid_data[10] = '\0';

  digitalWrite(11, LOW);
  delay(500);
  do
  {
    delay(200);
  } 
  while (RFID.available() <= 0);
  digitalWrite(11, HIGH);
  delay(500);
  Serial.println("Reading Card");
  rfid_data[0] = RFID.read();
  if (int(rfid_data[0]) == 10)
  {
    for (i = 0; i < 10; i++)
    {
      rfid_data[i] = RFID.read();
    }
    rfid_data[10] = '\0';
  }
  RFID.flush();
  delay(800);
  Serial.print("Removing Card: ");
  Serial.println(rfid_data);
  // Check if it's in the database
  a = EEPROM.read(0);
  if (a == 0)
  {
    Serial.println("Not in Database");
    return;
  }

  for (i = 0; i < a; i++)
  {
    for (b = 1; b < 11; b++)
    {
      rfid_in[b-1] = EEPROM.read((i*10)+b);
    }
    rfid_data[10] = '\0';
    b = 1;
    for (int c = 0; c < 10; c++)
    {
      if (rfid_data[c] == rfid_in[c])
      {
        b++;
      }
    }
    if (b == 10)
    {
      int rmstrt = ((i*10)+b)-9;
      // Last in database?
      if ((a*10) == (rmstrt+9))
      {
        EEPROM.write(0,a-1);
        Serial.println("Card Removed Successfully!");
        return;
      }
      for (tmp = rmstrt+10; tmp < (a*10)+1; tmp++)
      {
        char dta = EEPROM.read(tmp);
        delay(100);
        EEPROM.write(rmstrt,dta);
        rmstrt++;
      }
      delay(100);
      EEPROM.write(0,a-1);
      Serial.println("Card Removed Successfully!");
      return;
    }
  }
  Serial.println("Card Not in Database");
  return;
}

So aside from it not compiling, what does it do or not do?

There is no error with NewSoftwareSerial and you are using it correctly if you have an arduino with a pin number 255.