diff --git a/lib/MPW.rb b/lib/MPW.rb
index a29cff0..1b1b81a 100644
--- a/lib/MPW.rb
+++ b/lib/MPW.rb
@@ -29,6 +29,8 @@ module MPW
 		# @args: password -> the GPG key password
 		# @rtrn: true if data has been decrypted
 		def decrypt(password=nil)
+			@data = []
+
 			if File.exist?(@file_gpg) and not File.zero?(@file_gpg)
 				crypto       = GPGME::Crypto.new(armor: true)
 				data_decrypt = crypto.decrypt(IO.read(@file_gpg), password: password).read.force_encoding('utf-8')
@@ -165,7 +167,7 @@ module MPW
 				CSV.open(file, 'w', write_headers: true,
 									headers: ['name', 'group', 'protocol', 'host', 'user', 'password', 'port', 'comment']) do |csv|
 					@data.each do |item|
-						csv << [item.id, item.group, item.protocol, item.host, item.user, item.password, item.port, item.comment]
+						csv << [item.name, item.group, item.protocol, item.host, item.user, item.password, item.port, item.comment]
 					end
 				end
 
@@ -212,7 +214,7 @@ module MPW
 					                group:    row['group'],
 					                host:     row['host'],
 					                protocol: row['protocol'],
-					                login:    row['login'],
+					                user:     row['user'],
 					                password: row['password'],
 					                port:     row['port'],
 					                comment:  row['comment'],
@@ -229,7 +231,7 @@ module MPW
 					                group:    row['group'],
 					                host:     row['host'],
 					                protocol: row['protocol'],
-					                login:    row['login'],
+					                user:     row['user'],
 					                password: row['password'],
 					                port:     row['port'],
 					                comment:  row['comment'],
diff --git a/test/files/test_import.csv b/test/files/test_import.csv
index 1452c07..74c1844 100644
--- a/test/files/test_import.csv
+++ b/test/files/test_import.csv
@@ -1,3 +1,3 @@
-name,group,protocol,host,login,password,port,comment
-test_name_csv,test_group_csv,test_protocol_csv,test_host_csv,test_login_csv,test_password_csv,44,test_comment_csv
-test_name_update_csv,test_group_update_csv,test_protocol_update_csv,test_host_update_csv,test_login_update_csv,test_password_update_csv,45,test_comment_update_csv
+name,group,protocol,host,user,password,port,comment
+test_name,test_group,test_protocol,test_host,test_user,test_password,42,test_comment
+test_name_update,test_group_update,test_protocol_update,test_host_update,test_user_update,test_password_update,43,test_comment_update
diff --git a/test/files/test_import.yml b/test/files/test_import.yml
index e7fef00..889a264 100644
--- a/test/files/test_import.yml
+++ b/test/files/test_import.yml
@@ -5,7 +5,7 @@ XWas7vpy0HerhOYd:
   group: test_group
   host: test_host
   protocol: test_protocol
-  login: test_login
+  user: test_user
   password: test_password
   port: 42
   comment: test_comment
@@ -16,7 +16,7 @@ D7URyJENLa91jt0b:
   group: test_group_update
   host: test_host_update
   protocol: test_protocol_update
-  login: test_login_update
+  user: test_user_update
   password: test_password_update
   port: 43
   comment: test_comment_update
diff --git a/test/test_mpw.rb b/test/test_mpw.rb
index 94bbfa3..e8b51bf 100644
--- a/test/test_mpw.rb
+++ b/test/test_mpw.rb
@@ -1,13 +1,14 @@
 #!/usr/bin/ruby
  
 require_relative '../lib/MPW'
+require_relative '../lib/Item'
 require 'test/unit'
 require 'yaml'
 require 'csv'
  
 class TestMPW < Test::Unit::TestCase
 	def setup
-		@fixture_file = 'files/fixtures.yml'
+		fixture_file = 'files/fixtures.yml'
 
 		file_gpg = 'test.gpg'
 		key      = ENV['MPW_TEST_KEY']
@@ -19,45 +20,47 @@ class TestMPW < Test::Unit::TestCase
 		end
 
 		File.delete(file_gpg) if File.exist?(file_gpg)
-		@mpw = MPW::MPW.new(file_gpg, key)
-		@fixtures = YAML.load_file(@fixture_file)
+
+		@mpw      = MPW::MPW.new(file_gpg, key)
+		@fixtures = YAML.load_file(fixture_file)
 	end
  
  	def test_01_import_yaml
 		import_file = 'files/test_import.yml'
 
 		assert(@mpw.import(import_file, :yaml))
-		assert_equal(2, @mpw.search.length)
+		assert_equal(2, @mpw.list.length)
 
-		result = @mpw.search[0]
-		assert_equal(@fixtures['add']['name'],      result['name'])
-		assert_equal(@fixtures['add']['group'],     result['group'])
-		assert_equal(@fixtures['add']['host'],      result['host'])
-		assert_equal(@fixtures['add']['protocol'],  result['protocol'])
-		assert_equal(@fixtures['add']['login'],     result['login'])
-		assert_equal(@fixtures['add']['password'],  result['password'])
-		assert_equal(@fixtures['add']['port'].to_i, result['port'])
-		assert_equal(@fixtures['add']['comment'],   result['comment'])
+		item = @mpw.list[0]
+		assert_equal(@fixtures['add_new']['name'],      item.name)
+		assert_equal(@fixtures['add_new']['group'],     item.group)
+		assert_equal(@fixtures['add_new']['host'],      item.host)
+		assert_equal(@fixtures['add_new']['protocol'],  item.protocol)
+		assert_equal(@fixtures['add_new']['user'],      item.user)
+		assert_equal(@fixtures['add_new']['password'],  item.password)
+		assert_equal(@fixtures['add_new']['port'].to_i, item.port)
+		assert_equal(@fixtures['add_new']['comment'],   item.comment)
 	end
 
 	def test_02_export_yaml
+		import_file = 'files/test_import.yml'
 		export_file = 'test_export.yml'
 
-		assert(@mpw.import(@fixture_file))
-		assert_equal(2, @mpw.search.length)
+		assert(@mpw.import(import_file))
+		assert_equal(2, @mpw.list.length)
 		assert(@mpw.export(export_file, :yaml))
 		export = YAML::load_file(export_file)
 		assert_equal(2, export.length)
 
 		result = export.values[0]
-		assert_equal(@fixtures['add']['name'],      result['name'])
-		assert_equal(@fixtures['add']['group'],     result['group'])
-		assert_equal(@fixtures['add']['host'],      result['host'])
-		assert_equal(@fixtures['add']['protocol'],  result['protocol'])
-		assert_equal(@fixtures['add']['login'],     result['login'])
-		assert_equal(@fixtures['add']['password'],  result['password'])
-		assert_equal(@fixtures['add']['port'].to_i, result['port'])
-		assert_equal(@fixtures['add']['comment'],   result['comment'])
+		assert_equal(@fixtures['add_new']['name'],      result['name'])
+		assert_equal(@fixtures['add_new']['group'],     result['group'])
+		assert_equal(@fixtures['add_new']['host'],      result['host'])
+		assert_equal(@fixtures['add_new']['protocol'],  result['protocol'])
+		assert_equal(@fixtures['add_new']['user'],      result['user'])
+		assert_equal(@fixtures['add_new']['password'],  result['password'])
+		assert_equal(@fixtures['add_new']['port'].to_i, result['port'])
+		assert_equal(@fixtures['add_new']['comment'],   result['comment'])
 
 		File.unlink(export_file)
 	end
@@ -66,155 +69,73 @@ class TestMPW < Test::Unit::TestCase
 		import_file = 'files/test_import.csv'
 
 		assert(@mpw.import(import_file, :csv))
-		assert_equal(2, @mpw.search.length)
+		assert_equal(2, @mpw.list.length)
 
 		import = CSV.parse(File.read(import_file), headers: true)
 
-		result = @mpw.search[0]
-		assert_equal(import[0]['name'],      result['name'])
-		assert_equal(import[0]['group'],     result['group'])
-		assert_equal(import[0]['host'],      result['host'])
-		assert_equal(import[0]['protocol'],  result['protocol'])
-		assert_equal(import[0]['login'],     result['login'])
-		assert_equal(import[0]['password'],  result['password'])
-		assert_equal(import[0]['port'].to_i, result['port'])
-		assert_equal(import[0]['comment'],   result['comment'])
+		item = @mpw.list[0]
+		assert_equal(import[0]['name'],      item.name)
+		assert_equal(import[0]['group'],     item.group)
+		assert_equal(import[0]['host'],      item.host)
+		assert_equal(import[0]['protocol'],  item.protocol)
+		assert_equal(import[0]['user'],      item.user)
+		assert_equal(import[0]['password'],  item.password)
+		assert_equal(import[0]['port'].to_i, item.port)
+		assert_equal(import[0]['comment'],   item.comment)
 	end
 
 	def test_04_export_csv
+		import_file = 'files/test_import.csv'
 		export_file = 'test_export.csv'
-		assert(@mpw.import(@fixture_file))
-		assert_equal(2, @mpw.search.length)
+
+		assert(@mpw.import(import_file, :csv))
+		assert_equal(2, @mpw.list.length)
 		assert(@mpw.export(export_file, :csv))
 		export = CSV.parse(File.read(export_file), headers: true)
 		assert_equal(2, export.length)
 
 		result = export[0]
-		assert_equal(@fixtures['add']['name'],     result['name'])
-		assert_equal(@fixtures['add']['group'],    result['group'])
-		assert_equal(@fixtures['add']['host'],     result['host'])
-		assert_equal(@fixtures['add']['protocol'], result['protocol'])
-		assert_equal(@fixtures['add']['login'],    result['login'])
-		assert_equal(@fixtures['add']['password'], result['password'])
-		assert_equal(@fixtures['add']['port'],     result['port'])
-		assert_equal(@fixtures['add']['comment'],  result['comment'])
+		assert_equal(@fixtures['add_new']['name'],     result['name'])
+		assert_equal(@fixtures['add_new']['group'],    result['group'])
+		assert_equal(@fixtures['add_new']['host'],     result['host'])
+		assert_equal(@fixtures['add_new']['protocol'], result['protocol'])
+		assert_equal(@fixtures['add_new']['user'],     result['user'])
+		assert_equal(@fixtures['add_new']['password'], result['password'])
+		assert_equal(@fixtures['add_new']['port'],     result['port'])
+		assert_equal(@fixtures['add_new']['comment'],  result['comment'])
 
 		File.unlink(export_file)
 	end
 
-	def test_05_add
-		assert(@mpw.update(@fixtures['add']['name'], 
-		                   @fixtures['add']['group'], 
-		                   @fixtures['add']['host'],
-		                   @fixtures['add']['protocol'],
-		                   @fixtures['add']['login'],
-		                   @fixtures['add']['password'],
-		                   @fixtures['add']['port'],
-		                   @fixtures['add']['comment']))
+	def test_05_add_item
+		data = {name:     @fixtures['add_new']['name'],
+		        group:    @fixtures['add_new']['group'],
+		        host:     @fixtures['add_new']['host'],
+		        protocol: @fixtures['add_new']['protocol'],
+		        user:     @fixtures['add_new']['user'],
+		        password: @fixtures['add_new']['password'],
+		        port:     @fixtures['add_new']['port'],
+		        comment:  @fixtures['add_new']['comment'],
+		       }
+		
+		item = MPW::Item.new(data)
 
-		assert_equal(1, @mpw.search.length)
+		assert(!item.nil?)
+		assert(!item.empty?)
 
-		result = @mpw.search[0]
-		assert_equal(@fixtures['add']['name'],      result['name'])
-		assert_equal(@fixtures['add']['group'],     result['group'])
-		assert_equal(@fixtures['add']['host'],      result['host'])
-		assert_equal(@fixtures['add']['protocol'],  result['protocol'])
-		assert_equal(@fixtures['add']['login'],     result['login'])
-		assert_equal(@fixtures['add']['password'],  result['password'])
-		assert_equal(@fixtures['add']['port'].to_i, result['port'])
-		assert_equal(@fixtures['add']['comment'],   result['comment'])
+		assert(@mpw.add(item))
 
-		assert(@mpw.update(@fixtures['add']['name'], 
-		                   @fixtures['add']['group'], 
-		                   @fixtures['add']['host'],
-		                   @fixtures['add']['protocol'],
-		                   @fixtures['add']['login'],
-		                   @fixtures['add']['password'],
-		                   @fixtures['add']['port'],
-		                   @fixtures['add']['comment']))
+		assert_equal(1, @mpw.list.length)
 
-
-		assert_equal(2, @mpw.search.length)
-	end
-
-	def test_06_add_empty_name
-		assert(!@mpw.update('', 
-		                    @fixtures['add']['group'], 
-		                    @fixtures['add']['host'],
-		                    @fixtures['add']['protocol'],
-		                    @fixtures['add']['login'],
-		                    @fixtures['add']['password'],
-		                    @fixtures['add']['port'],
-		                    @fixtures['add']['comment']))
-
-		assert_equal(0, @mpw.search.length)
-	end
-
-	def test_07_update_empty
-		assert(@mpw.import(@fixture_file, :yaml))
-		assert_equal(2, @mpw.search.length)
-
-		id = @mpw.search[0]['id']
-
-		assert(@mpw.update('','', '','','','','', '', id))
-
-		result = @mpw.search_by_id(id)
-		assert_equal(@fixtures['add']['name'],      result['name'])
-		assert_equal(@fixtures['add']['group'],     result['group'])
-		assert_equal(@fixtures['add']['host'],      result['host'])
-		assert_equal(@fixtures['add']['protocol'],  result['protocol'])
-		assert_equal(@fixtures['add']['login'],     result['login'])
-		assert_equal(@fixtures['add']['password'],  result['password'])
-		assert_equal(@fixtures['add']['port'].to_i, result['port'])
-		assert_equal(@fixtures['add']['comment'],   result['comment'])
-	end
-
-	def test_08_update
-		assert(@mpw.import(@fixture_file, :yaml))
-		assert_equal(2, @mpw.search.length)
-
-		id = @mpw.search[0]['id']
-
-		assert(@mpw.update(@fixtures['update']['name'], 
-		                   @fixtures['update']['group'], 
-		                   @fixtures['update']['host'],
-		                   @fixtures['update']['protocol'],
-		                   @fixtures['update']['login'],
-		                   @fixtures['update']['password'],
-		                   @fixtures['update']['port'],
-		                   @fixtures['update']['comment'],
-		                   id))
-
-		assert_equal(2, @mpw.search.length)
-
-		result = @mpw.search_by_id(id)
-		assert_equal(@fixtures['update']['name'],      result['name'])
-		assert_equal(@fixtures['update']['group'],     result['group'])
-		assert_equal(@fixtures['update']['host'],      result['host'])
-		assert_equal(@fixtures['update']['protocol'],  result['protocol'])
-		assert_equal(@fixtures['update']['login'],     result['login'])
-		assert_equal(@fixtures['update']['password'],  result['password'])
-		assert_equal(@fixtures['update']['port'].to_i, result['port'])
-		assert_equal(@fixtures['update']['comment'],   result['comment'])
-	end
-
-	def test_09_remove
-		assert(@mpw.import(@fixture_file, :yaml))
-		assert_equal(2, @mpw.search.length)
-
-		id = @mpw.search[0]['id']
-		assert(@mpw.remove(id)) 
-
-		assert_equal(1, @mpw.search.length)
-	end
-
-	def test_10_remove_noexistent
-		assert(@mpw.import(@fixture_file, :yaml))
-		assert_equal(2, @mpw.search.length)
-
-		assert(!@mpw.remove('TEST_NOEXISTENT_ID')) 
-
-		assert_equal(2, @mpw.search.length)
+		item = @mpw.list[0]
+		assert_equal(@fixtures['add_new']['name'],      item.name)
+		assert_equal(@fixtures['add_new']['group'],     item.group)
+		assert_equal(@fixtures['add_new']['host'],      item.host)
+		assert_equal(@fixtures['add_new']['protocol'],  item.protocol)
+		assert_equal(@fixtures['add_new']['user'],      item.user)
+		assert_equal(@fixtures['add_new']['password'],  item.password)
+		assert_equal(@fixtures['add_new']['port'].to_i, item.port)
+		assert_equal(@fixtures['add_new']['comment'],   item.comment)
 	end
 
 	def test_11_encrypt_empty_file
@@ -222,75 +143,38 @@ class TestMPW < Test::Unit::TestCase
 	end
 
 	def test_12_encrypt
-		assert(@mpw.import(@fixture_file, :yaml))
-		assert_equal(2, @mpw.search.length)
+		import_file = 'files/test_import.yml'
+
+		assert(@mpw.import(import_file, :yaml))
+		assert_equal(2, @mpw.list.length)
 
 		assert(@mpw.encrypt)	
 	end
 
 	def test_13_decrypt_empty_file
 		assert(@mpw.decrypt)
-		assert_equal(0, @mpw.search.length)
+		assert_equal(0, @mpw.list.length)
 	end
 
 	def test_14_decrypt
-		assert(@mpw.import(@fixture_file, :yaml))
-		assert_equal(2, @mpw.search.length)
+		import_file = 'files/test_import.yml'
+
+		assert(@mpw.import(import_file, :yaml))
+		assert_equal(2, @mpw.list.length)
 
 		assert(@mpw.encrypt)	
 
 		assert(@mpw.decrypt)
-		assert_equal(2, @mpw.search.length)
+		assert_equal(2, @mpw.list.length)
 
-		result = @mpw.search[0]
-		assert_equal(@fixtures['add']['name'],      result['name'])
-		assert_equal(@fixtures['add']['group'],     result['group'])
-		assert_equal(@fixtures['add']['host'],      result['host'])
-		assert_equal(@fixtures['add']['protocol'],  result['protocol'])
-		assert_equal(@fixtures['add']['login'],     result['login'])
-		assert_equal(@fixtures['add']['password'],  result['password'])
-		assert_equal(@fixtures['add']['port'].to_i, result['port'])
-		assert_equal(@fixtures['add']['comment'],   result['comment'])
-	end
-
-	def test_15_sync_local_empty
-		import_file = 'files/test_import.yml'
-
-		data = []
-		YAML.load_file(import_file).each_value { |v| data.push(v) }
-
-		@mpw.sync(data, 0)
-
-		result = @mpw.search[0]
-		assert_equal(@fixtures['add']['name'],      result['name'])
-		assert_equal(@fixtures['add']['group'],     result['group'])
-		assert_equal(@fixtures['add']['host'],      result['host'])
-		assert_equal(@fixtures['add']['protocol'],  result['protocol'])
-		assert_equal(@fixtures['add']['login'],     result['login'])
-		assert_equal(@fixtures['add']['password'],  result['password'])
-		assert_equal(@fixtures['add']['port'].to_i, result['port'])
-		assert_equal(@fixtures['add']['comment'],   result['comment'])
-
-		assert_equal(2, @mpw.search.length)
-	end
-
-	def test_16_sync_remote_outdated_and_local_empty
-		import_file = 'files/test_import.yml'
-
-		data = []
-		YAML.load_file(import_file).each_value { |v| data.push(v) }
-
-		assert(@mpw.sync(data, Time.now.to_i))
-
-		assert_equal(0, @mpw.search.length)
-	end
-
-	def test_17_sync_empty_data
-		assert(@mpw.import(@fixture_file, :yaml))
-		assert_equal(2, @mpw.search.length)
-	
-		assert(@mpw.sync([], 0))
-
-		assert_equal(2, @mpw.search.length)
+		item = @mpw.list[0]
+		assert_equal(@fixtures['add_new']['name'],      item.name)
+		assert_equal(@fixtures['add_new']['group'],     item.group)
+		assert_equal(@fixtures['add_new']['host'],      item.host)
+		assert_equal(@fixtures['add_new']['protocol'],  item.protocol)
+		assert_equal(@fixtures['add_new']['user'],      item.user)
+		assert_equal(@fixtures['add_new']['password'],  item.password)
+		assert_equal(@fixtures['add_new']['port'].to_i, item.port)
+		assert_equal(@fixtures['add_new']['comment'],   item.comment)
 	end
 end