diff --git a/lib/mpw/sync/ssh.rb b/lib/mpw/sync/ssh.rb
index 632e292..89a7fd5 100644
--- a/lib/mpw/sync/ssh.rb
+++ b/lib/mpw/sync/ssh.rb
@@ -2,79 +2,56 @@
 # author: nishiki
 # mail: nishiki@yaegashi.fr
 
-require 'rubygems'
 require 'i18n'
 require 'net/ssh'
 require 'net/sftp'
 	
 module MPW
-	class SyncSSH
-	
-		attr_accessor :error_msg
-		attr_accessor :enable
-	
-		# Constructor
-		# @args: host -> the server host
-		#        port -> ther connection port
-		#        gpg_key -> the gpg key
-		#        password -> the remote password
-		def initialize(host, user, password, path, port=nil)
-			@error_msg = nil
-			@enable    = false
-
-			@host      = host
-			@user      = user
-			@password  = password
-			@path      = path
-			@port      = port.instance_of?(Integer) ? 22 : port
-		end
-	
-		# Connect to server
-		# @rtrn: false if the connection fail
-		def connect
-			Net::SSH.start(@host, @user, password: @password, port: @port) do |ssh|
-				@enable = true
-			end
-		rescue Exception => e
-			@error_msg = "#{I18n.t('error.sync.connection')}\n#{e}"
-			@enable    = false
-		else
-			return @enable
-		end
-	
-		# Get data on server
-		# @args: gpg_password -> the gpg password
-		# @rtrn: nil if nothing data or error
-		def get(file_tmp)
-			return false if not @enable
-			
-			Net::SFTP.start(@host, @user, password: @password, port: @port) do |sftp|
-				sftp.lstat(@path) do |response|
-					sftp.download!(@path, file_tmp) if response.ok?
-				end
-			end
-
-			return true
-		rescue Exception => e
-			@error_msg = "#{I18n.t('error.sync.download')}\n#{e}"
-			return false
-		end
-	
-		# Update the remote data
-		# @args: file_gpg -> the data to send on server
-		# @rtrn: false if there is a problem
-		def update(file_gpg)
-			return true if not @enable
-	
-			Net::SFTP.start(@host, @user, password: @password, port: @port) do |sftp|
-				sftp.upload!(file_gpg, @path)
-			end
-
-			return true
-		rescue Exception => e
-			@error_msg = "#{I18n.t('error.sync.upload')}\n#{e}"
-			return false
-		end
+class SyncSSH
 
+	# Constructor
+	# @args: config -> the config
+	def initialize(config)
+		@host      = config['host']
+		@user      = config['user']
+		@password  = config['password']
+		@path      = config['path']
+		@port      = config['port'].instance_of?(Integer) ? 22 : config['port']
 	end
+
+	# Connect to server
+	# @rtrn: false if the connection fail
+	def connect
+		Net::SSH.start(@host, @user, password: @password, port: @port) do
+			break
+		end
+	rescue Exception => e
+		raise "#{I18n.t('error.sync.connection')}\n#{e}"
+	end
+
+	# Get data on server
+	# @args: gpg_password -> the gpg password
+	# @rtrn: nil if nothing data or error
+	def get(file_tmp)
+		Net::SFTP.start(@host, @user, password: @password, port: @port) do |sftp|
+			sftp.lstat(@path) do |response|
+				sftp.download!(@path, file_tmp) if response.ok?
+			end
+		end
+	rescue Exception => e
+		raise "#{I18n.t('error.sync.download')}\n#{e}"
+	end
+
+	# Update the remote data
+	# @args: file_gpg -> the data to send on server
+	# @rtrn: false if there is a problem
+	def update(file_gpg)
+		Net::SFTP.start(@host, @user, password: @password, port: @port) do |sftp|
+			sftp.upload!(file_gpg, @path)
+		end
+	rescue Exception => e
+		raise "#{I18n.t('error.sync.upload')}\n#{e}"
+	end
+
+end
 end