diff --git a/.gitignore b/.gitignore
index c6039a2f2283522e85f5e76bd85dcdb4ec9de051..9beac58aa5f7e2328a2caa2343638b3086902b67 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,4 +11,5 @@
 *.nc
 *.xml
 *.stackdump
+__pycache__
 
diff --git a/code_roscop.csv b/roscop/code_roscop.csv
similarity index 100%
rename from code_roscop.csv
rename to roscop/code_roscop.csv
diff --git a/roscop/roscop.py b/roscop/roscop.py
new file mode 100644
index 0000000000000000000000000000000000000000..f6d620635cf63e1ce2788cbd835f3c9918960d26
--- /dev/null
+++ b/roscop/roscop.py
@@ -0,0 +1,35 @@
+"""
+code roscop
+"""
+
+import csv, shelve,sys
+
+# class roscop 
+# ------------
+class Roscop:
+
+  # constructor with values by default
+	def __init__(self, file):
+		self.file = file
+		
+	# call by print()
+	def __repr__(self):
+		return "class Roscop, file: {}".format(self.file)
+
+	# read code roscop file
+	def read(self):
+		print("Code roscop file: %s" % self.file)
+		with open(self.file, 'rt') as f:
+			reader = csv.DictReader(f, delimiter=';')
+			for row in reader:
+				print("%s : %s : %s : %s : %s" % (row['key'],  row['long_name'], 
+				row['standard_name'], row['units'], row['format']))
+		return
+
+# for testing in standalone context
+# ---------------------------------    
+if __name__ == "__main__":
+	from roscop import Roscop
+	r = Roscop("code_roscop.csv")
+	r.read()
+	print(r)
\ No newline at end of file