diff --git a/src/Entity/FeedType.php b/src/Entity/FeedType.php
index a7d4e09..06535c1 100644
--- a/src/Entity/FeedType.php
+++ b/src/Entity/FeedType.php
@@ -141,6 +141,13 @@ class FeedType extends ConfigEntityBundleBase implements FeedTypeInterface, Enti
    * @var array
    */
   protected $sources;
+  
+  /**
+   * The list of types sources.
+   *
+   * @var string
+   */
+  protected $typeSources;
 
   /**
    * The list of targets;
@@ -502,4 +509,13 @@ class FeedType extends ConfigEntityBundleBase implements FeedTypeInterface, Enti
     return $properties;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getSourceType() {
+      $this->typeSources = $this->getParser()->getSourceType();
+      return $this->typeSources;
+  }
+
+
 }
diff --git a/src/FeedTypeInterface.php b/src/FeedTypeInterface.php
index 50a685e..c03592f 100644
--- a/src/FeedTypeInterface.php
+++ b/src/FeedTypeInterface.php
@@ -123,5 +123,13 @@ interface FeedTypeInterface extends ConfigEntityInterface {
    *   True if locked, false if not.
    */
   public function isLocked();
+  
+   /**
+   * Returns options types to a form.
+   *
+   * @return string
+   *
+   */
+  public function getSourceType();
 
 }
diff --git a/src/Feeds/Parser/CsvParser.php b/src/Feeds/Parser/CsvParser.php
index 995d8e6..4a22ec4 100644
--- a/src/Feeds/Parser/CsvParser.php
+++ b/src/Feeds/Parser/CsvParser.php
@@ -7,30 +7,31 @@
 
 namespace Drupal\feeds\Feeds\Parser;
 
-use Drupal\Component\Utility\Unicode;
+
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\feeds\Component\CsvParser as CsvFileParser;
 use Drupal\feeds\Exception\EmptyFeedException;
 use Drupal\feeds\FeedInterface;
 use Drupal\feeds\Feeds\Item\DynamicItem;
-use Drupal\feeds\Plugin\Type\ConfigurablePluginBase;
+use Drupal\feeds\Plugin\Type\PluginBase;
 use Drupal\feeds\Plugin\Type\FeedPluginFormInterface;
 use Drupal\feeds\Plugin\Type\Parser\ParserInterface;
 use Drupal\feeds\Result\FetcherResultInterface;
 use Drupal\feeds\Result\ParserResult;
 use Drupal\feeds\StateInterface;
 
+
+
 /**
  * Defines a CSV feed parser.
  *
  * @FeedsParser(
  *   id = "csv",
  *   title = @Translation("CSV"),
- *   description = @Translation("Parse CSV files.")
+ *   description = @Translation("Parse CSV files."),
  * )
  */
-class CsvParser extends ConfigurablePluginBase implements FeedPluginFormInterface, ParserInterface {
-
+class CsvParser extends PluginBase implements ParserInterface, FeedPluginFormInterface {
   /**
    * {@inheritdoc}
    */
@@ -72,11 +73,8 @@ class CsvParser extends ConfigurablePluginBase implements FeedPluginFormInterfac
     return $result;
   }
 
-  /**
-   * {@inheritdoc}
-   */
   public function getMappingSources() {
-    return FALSE;
+    return array();
   }
 
   /**
@@ -94,10 +92,10 @@ class CsvParser extends ConfigurablePluginBase implements FeedPluginFormInterfac
    */
   public function buildFeedForm(array $form, FormStateInterface $form_state, FeedInterface $feed) {
     $feed_config = $feed->getConfigurationFor($this);
-    $form['parser']['#tree'] = TRUE;
+    $form['parser']['parser']['#tree'] = TRUE;
     $form['parser']['#weight'] = -10;
 
-    $form['parser']['delimiter'] = [
+    $form['parser']['parser']['delimiter'] = [
       '#type' => 'select',
       '#title' => $this->t('Delimiter'),
       '#description' => $this->t('The character that delimits fields in the CSV file.'),
@@ -130,31 +128,8 @@ class CsvParser extends ConfigurablePluginBase implements FeedPluginFormInterfac
     ];
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
-    $form['delimiter'] = [
-      '#type' => 'select',
-      '#title' => $this->t('Default delimiter'),
-      '#description' => $this->t('Default field delimiter.'),
-      '#options' => [
-        ',' => ',',
-        ';' => ';',
-        'TAB' => 'TAB',
-        '|' => '|',
-        '+' => '+',
-      ],
-      '#default_value' => $this->configuration['delimiter'],
-    ];
-    $form['no_headers'] = [
-      '#type' => 'checkbox',
-      '#title' => $this->t('No headers'),
-      '#description' => $this->t("Check if the imported CSV file does not start with a header row. If checked, mapping sources must be named '0', '1', '2' etc."),
-      '#default_value' => $this->configuration['no_headers'],
-    ];
-
-    return $form;
-  }
+    public function getSourceType() {
+        return 'textfield';
+    }
 
 }
diff --git a/src/Form/MappingForm.php b/src/Form/MappingForm.php
index a4340f7..0bfdede 100644
--- a/src/Form/MappingForm.php
+++ b/src/Form/MappingForm.php
@@ -47,7 +47,6 @@ class MappingForm extends FormBase {
   public function buildForm(array $form, FormStateInterface $form_state, FeedTypeInterface $feeds_feed_type = NULL) {
     $feed_type = $this->feedType = $feeds_feed_type;
     $this->targets = $targets = $feed_type->getMappingTargets();
-
     // Denormalize targets.
     $this->sourceOptions = [];
     foreach ($feed_type->getMappingSources() as $key => $info) {
@@ -151,20 +150,27 @@ class MappingForm extends FormBase {
       '#theme' => 'item_list',
       '#items' => [],
     ];
-
     foreach ($mapping['map'] as $column => $source) {
       if (!$this->targets[$mapping['target']]->hasProperty($column)) {
         unset($mapping['map'][$column]);
         continue;
       }
-      $row['map'][$column] = [
-        '#type' => 'select',
-        '#options' => $this->sourceOptions,
-        '#default_value' => $source,
-        '#empty_option' => $this->t('- Select a source -'),
-        '#attributes' => ['class' => ['feeds-table-select-list']],
-      ];
-
+      if ($this->feedType->getSourceType() == 'select') {
+        $row['map'][$column] = [
+            '#type' => 'select',
+            '#options' => $this->sourceOptions,
+            '#default_value' => $source,
+            '#empty_option' => $this->t('- Select a source -'),
+            '#attributes' => ['class' => ['feeds-table-select-list']],
+        ];
+      }
+      else {
+        $row['map'][$column] = [
+            '#type' => 'textfield',
+            '#default_value' => $source,
+            '#attributes' => ['class' => ['feeds-table-select-list']],
+        ];
+      }
       $label = SafeMarkup::checkPlain($this->targets[$mapping['target']]->getLabel());
 
       if (count($mapping['map']) > 1) {
diff --git a/src/Plugin/Type/Parser/ParserInterface.php b/src/Plugin/Type/Parser/ParserInterface.php
index 9c6f956..1e682c7 100644
--- a/src/Plugin/Type/Parser/ParserInterface.php
+++ b/src/Plugin/Type/Parser/ParserInterface.php
@@ -48,4 +48,9 @@ interface ParserInterface extends FeedsPluginInterface {
    */
   public function getMappingSources();
 
+  /*
+   * Returns options types to a form
+   */
+  public function getSourceType();
+
 }
diff --git a/src/Plugin/Type/PluginBase.php b/src/Plugin/Type/PluginBase.php
index cb8adf6..de57ad7 100644
--- a/src/Plugin/Type/PluginBase.php
+++ b/src/Plugin/Type/PluginBase.php
@@ -218,5 +218,8 @@ abstract class PluginBase extends DrupalPluginBase implements FeedsPluginInterfa
   private function container() {
     return \Drupal::getContainer();
   }
-
+  
+  public function getSourceType() {
+      return 'select';
+  }
 }
