diff --git a/typo3_files/files.inc b/typo3_files/files.inc
new file mode 100644
index 0000000..46d30e1
--- /dev/null
+++ b/typo3_files/files.inc
@@ -0,0 +1,103 @@
+<?php
+/**
+ * @file
+ * Base class for migrating files into Typo3.
+ */
+
+/**
+ * Base class for all file migrations - handles commonalities across all
+ * supported source Typo3 versions.
+ *
+ * In addition to the arguments supported by Typo3Migration, the following
+ * must be passed in the $arguments array:
+ *  source_dir: Path to folder containing files to be migrated.
+ *
+ * The following optional arguments may be passed:
+ * user_migration - Machine name of a user migration, used to establish
+ *   dependencies and a sourceMigration for the uid mapping.
+ * default_uid - Drupal7 7 (destination) uid of the user account to use as
+ *   the default.
+ * bundle - File bundle to use as the target - defaults to 'file'.
+ * file_class - Override for the default MigrateFileUri file class.
+ * destination_dir - Destination directory for the files (defaults to public://).
+ */
+class Typo3FileMigration extends BaseMigration {
+  public function __construct(array $arguments) {
+    parent::__construct($arguments);
+    
+// the actual files are in tx_dam
+      $query = db_select(TYPO3_DATABASE_NAME . '.tx_dam', 'u')
+            ->fields('u', array('file_path', 'file_name','file_mime_type','media_type','title' ))
+            ->orderBy('tstamp', 'ASC');
+
+    //$query = db_select(TYPO3_DATABASE_NAME . '.tx_dam_mm_ref', 'u')
+        //      ->fields('u', array('uid_local', 'uid_foreign','tablenames','ident','sorting_foreign','sorting' ))
+              
+    $query->condition('u.deleted', '0');
+
+    if (!empty($arguments['user_migration'])) {
+       $user_migration = $arguments['user_migration'];
+       $this->dependencies[] = $user_migration;
+    }
+    if (empty($arguments['bundle'])) {
+      $arguments['bundle'] = 'file';
+    }
+    if (empty($arguments['file_class'])) {
+      $arguments['file_class'] = 'MigrateFileUri';
+    }
+    if (empty($arguments['destination_dir'])) {
+      $arguments['destination_dir'] = 'public://';
+    }
+
+    // Allow derived classes to override this definition by setting it before
+    // calling their parent constructor
+    if (!isset($this->map)) {
+      $this->map = new MigrateSQLMap($this->machineName,
+        array(
+          'uid' => array(
+            'type' => 'int',
+            'unsigned' => TRUE,
+            'not null' => TRUE,
+            'description' => 'Source file ID',
+            'alias' => 'f',
+          ),
+        ),
+        MigrateDestinationFile::getKeySchema()
+      );
+    }
+$this->source = new MigrateSourceSQL($query, array(), NULL, array('map_joinable' => FALSE));
+      
+    // https://www.drupal.org/node/1546120
+    //    $this->destination = new MigrateDestinationFile('image');
+    $this->destination = new MigrateDestinationFile($arguments['bundle'],
+                                                    $arguments['file_class']);
+
+    // Setup common mappings
+    $this->addFieldMapping('destination_dir')
+         ->defaultValue($arguments['destination_dir']);
+    $this->addFieldMapping('source_dir')
+         ->defaultValue(TYPO3_FILE_SRC);
+         
+    $this->addFieldMapping('file_replace')
+         ->defaultValue(MigrateFile::FILE_EXISTS_REUSE);
+    $this->addFieldmapping('preserve_files')
+          ->defaultValue(TRUE);
+
+    if (isset($arguments['default_uid'])) {
+      $default_uid = $arguments['default_uid'];
+    }
+    else {
+      $default_uid = 1;
+    }
+    if (isset($user_migration)) {
+      $this->addFieldMapping('uid', 'uid')
+           ->sourceMigration($user_migration)
+           ->defaultValue($default_uid);
+    }
+    else {
+      $this->addFieldMapping('uid')
+           ->defaultValue($default_uid);
+    }
+    $this->addUnmigratedSources(array('filename', 'filemime', 'filesize'));
+  }
+}
diff --git a/typo3_files/typo3_files.info b/typo3_files/typo3_files.info
new file mode 100644
index 0000000..b2cfb0d
--- /dev/null
+++ b/typo3_files/typo3_files.info
@@ -0,0 +1,12 @@
+name = "Typo3 Files Migrate"
+description = "Typo3 Files to drupal migration."
+package = "Migration"
+core = 7.x
+
+dependencies[] = taxonomy
+dependencies[] = image
+dependencies[] = comment
+dependencies[] = typo3_migrate
+dependencies[] = migrate_extras
+
+files[] = files.inc
diff --git a/typo3_files/typo3_files.module b/typo3_files/typo3_files.module
new file mode 100644
index 0000000..afd08d3
--- /dev/null
+++ b/typo3_files/typo3_files.module
@@ -0,0 +1,30 @@
+<?php
+define('TYPO3_FILE_SRC', variable_get('typo3_file_source', '../typo3files'));
+
+
+/**
+ * Implements hook_migrate_api().
+ */
+function typo3_files_migrate_api() {
+  $api = array(
+    'api' => 2,
+    // Give the group a human-readable title
+    'groups' => array(
+      'typo3' => array(
+        'title' => t('typo3'),
+        
+      ),
+      
+    ),
+    
+    // Migration classes.
+    'migrations' => array(
+      'typo3_files' => array(
+        'class_name' => 'Typo3FileMigration',
+        'group_name' => 'typo3',
+        'source_dir' => TYPO3_FILE_SRC,
+      ),
+    ),
+  );
+  return $api;
+}
diff --git a/typo3_migrate.module b/typo3_migrate.module
index 96bc1dc..0732db4 100644
--- a/typo3_migrate.module
+++ b/typo3_migrate.module
@@ -1,6 +1,6 @@
 <?php
 define('TYPO3_DATABASE_NAME', variable_get('typo3_database', 'typo3'));
-
+define('TYPO3_FILES_SOURCE', variable_get('typo3_files', '../typo3files')
 /**
  * Implements hook_migrate_api().
  * For migration classes to be recognized by the Migrate module.
@@ -60,6 +60,12 @@ function typo3_migrate_config($form_state) {
     '#default_value' => variable_get('typo3_database', 'typo3_DB'),
     '#required' => TRUE
   );
+  $form['source_directory'] = array(
+    '#type' => 'textfield',
+    '#size' => 60,
+    '#title' => t('File prefix'),
+    '#default_value' => variable_get('typo3_database', '../typo3files'),
+  );
   return system_settings_form($form);
 }
 
