diff --git a/plugins/sources/csv.inc b/plugins/sources/csv.inc
index acbae68..1040d90 100644
--- a/plugins/sources/csv.inc
+++ b/plugins/sources/csv.inc
@@ -46,12 +46,13 @@ class MigrateSourceCSV extends MigrateSource {
    *  the default descriptions, or to add additional source fields which the
    *  migration will add via other means (e.g., prepareRow()).
    */
-  public function __construct($path, array $csvcolumns = array(), array $options = array(), array $fields = array()) {
+  public function __construct($path, array $csvcolumns = array(), array $options = array(), array $fields = array(), $with_header_row = FALSE) {
     parent::__construct();
     $this->file = $path;
     $this->csvcolumns = $csvcolumns;
     $this->options = $options;
     $this->fields = $fields;
+    $this->with_header_row = $with_header_row;
     // fgetcsv specific options
     foreach (array('length' => NULL, 'delimiter' => ',', 'enclosure' => '"', 'escape' => '\\') as $key => $default) {
       $this->fgetcsv[$key] = isset($options[$key]) ? $options[$key] : $default;
@@ -102,6 +103,10 @@ class MigrateSourceCSV extends MigrateSource {
   public function count($refresh = FALSE) {
     // TODO. If this takes too much time/memory, use exec('wc -l')
     $count = count(file($this->file));
+    // count -1 if first csv row is a header
+    if ($this->with_header_row && $count>=1) {
+      $count = $count-1;    
+    }
     return $count;
   }
 
@@ -139,9 +144,16 @@ class MigrateSourceCSV extends MigrateSource {
 
     // get next row
     migrate_instrument_start('MigrateSourceCSV next');
-    $map = $migration->getMap();
+    $map = $migration->getMap();    
     // @todo $this->fgetcsv['escape'] not used as it gives warning in 5.2 - http://drupal.org/node/1039808.
     while ($row = fgetcsv($this->result, $this->fgetcsv['length'], $this->fgetcsv['delimiter'], $this->fgetcsv['enclosure'])) {
+    
+      //skip first row if it is a csv header row
+      if ($this->numProcessed == 0 && $this->with_header_row) {
+        $this->numProcessed++;
+        continue;
+      }
+
       // Set meaningful keys for the columns mentioned in $this->csvcolumns().
       foreach ($this->csvcolumns as $int => $values) {
         list($key, $description) = $values;
