diff --git a/engine/calldesc.go b/engine/calldesc.go
old mode 100755
new mode 100644
diff --git a/engine/libstats.go b/engine/libstats.go
old mode 100755
new mode 100644
diff --git a/engine/loader_csv_test.go b/engine/loader_csv_test.go
old mode 100755
new mode 100644
diff --git a/engine/loader_it_test.go b/engine/loader_it_test.go
old mode 100755
new mode 100644
diff --git a/engine/model_helpers.go b/engine/model_helpers.go
old mode 100755
new mode 100644
diff --git a/engine/model_helpers_test.go b/engine/model_helpers_test.go
old mode 100755
new mode 100644
diff --git a/engine/models.go b/engine/models.go
old mode 100755
new mode 100644
diff --git a/engine/resources.go b/engine/resources.go
old mode 100755
new mode 100644
diff --git a/engine/storage_csv.go b/engine/storage_csv.go
old mode 100755
new mode 100644
diff --git a/engine/storage_interface.go b/engine/storage_interface.go
old mode 100755
new mode 100644
diff --git a/engine/storage_map.go b/engine/storage_map.go
old mode 100755
new mode 100644
diff --git a/engine/storage_mongo_datadb.go b/engine/storage_mongo_datadb.go
old mode 100755
new mode 100644
diff --git a/engine/storage_mongo_stordb.go b/engine/storage_mongo_stordb.go
old mode 100755
new mode 100644
diff --git a/engine/storage_redis.go b/engine/storage_redis.go
old mode 100755
new mode 100644
diff --git a/engine/storage_sql.go b/engine/storage_sql.go
old mode 100755
new mode 100644
diff --git a/engine/storage_utils.go b/engine/storage_utils.go
old mode 100755
new mode 100644
diff --git a/engine/stordb_it_test.go b/engine/stordb_it_test.go
old mode 100755
new mode 100644
diff --git a/engine/tp_reader.go b/engine/tp_reader.go
old mode 100755
new mode 100644
diff --git a/engine/tpcsvreader.go b/engine/tpcsvreader.go
new file mode 100644
index 000000000..f03ae1e5b
--- /dev/null
+++ b/engine/tpcsvreader.go
@@ -0,0 +1,38 @@
+/*
+Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
+Copyright (C) ITsysCOM GmbH
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see
+*/
+
+package engine
+
+import (
+ "encoding/csv"
+
+ "github.com/cgrates/cgrates/config"
+)
+
+// TPcsvReader reads data from csv file based on template
+type TPcsvReader struct {
+ fldsTpl []*config.CfgCdrField
+ srcType string
+ srcPath string
+ csvReaders map[string]*csv.Reader // map[fileName]*csv.Reader for each name in fldsTpl
+}
+
+// Read implements TPReader interface
+func (csv *TPcsvReader) Read() (itm interface{}, err error) {
+ return
+}
diff --git a/engine/tpimporter_csv.go b/engine/tpimporter_csv.go
old mode 100755
new mode 100644
diff --git a/engine/tploader.go b/engine/tploader.go
new file mode 100644
index 000000000..6f342d82c
--- /dev/null
+++ b/engine/tploader.go
@@ -0,0 +1,34 @@
+/*
+Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
+Copyright (C) ITsysCOM GmbH
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see
+*/
+
+package engine
+
+import ()
+
+// TPReader is the data source for TPLoader
+type TPReader interface {
+ // Read will read one record from data source
+ Read() (interface{}, error)
+}
+
+// TPLoader will read a record from TPReader and write it out to dataManager
+type TPLoader struct {
+ srcType string // needed by Load for choosing destiantion
+ dataReader TPReader // provides data to load
+ dm *DataManager // writes data to load
+}