Index: src/includes/classes/xmlrpc_handler.inc.php
===================================================================
--- src/includes/classes/xmlrpc_handler.inc.php	(revision e432cd703d679cc8efe509cc755a10e410af9dfe)
+++ src/includes/classes/xmlrpc_handler.inc.php	(revision aeda99629124019deeb4433aaf24f71f3ee6a39c)
@@ -152,7 +152,7 @@
 
 		if ( $root->firstChild->nodeName == "fault" ) {
-			$response[faultCode] = (int)$root->firstChild->firstChild->firstChild->firstChild->lastChild->firstChild->nodeValue;
-			$response[faultString] = $root->firstChild->firstChild->firstChild->lastChild->lastChild->firstChild->nodeValue;
-			$this->errors[] = "{$response[faultString]} ({$response[faultCode]})";
+			$response["faultCode"] = (int)$root->firstChild->firstChild->firstChild->firstChild->lastChild->firstChild->nodeValue;
+			$response["faultString"] = $root->firstChild->firstChild->firstChild->lastChild->lastChild->firstChild->nodeValue;
+			$this->errors[] = "{$response["faultString"]} ({$response["faultCode"]})";
 			$this->errors[] = "xmlrpc_fault";
 			return false;
@@ -481,26 +481,6 @@
 		$responses = array();
 		foreach ( $methods as $methodkey => $methodval ) {
-			if ( $methodval[1] == "." ) {
-				$prefix = substr( $methodval, 0, 1 );
-				$methodval = substr( $methodval, 5 );
-				$methodval = "{$prefix}{$methodval}";
-			} elseif ( strlen( $methodval ) > 6 && $methodval[6] == "." ) {
-				$prefix = substr( $methodval, 0, 1 );
-				$methodval = substr( $methodval, 7 );
-				$methodval = "{$methodval}";
-			} elseif ( $methodval == "view_list" ) {
-			} elseif ( substr( $methodval, 0, 3 ) == "dht" ) {
-			} else {
-				$methodval = substr( $methodval, 4 );
-			}
 			$r++;
-
-			if ( $methodval == "dht_statistics" ) {
-				foreach ( $this->response[$r][0] as $dkey => $dval ) {
-					$responses["{$methodval}_{$dkey}"] = $dval;
-				}
-			} else {
-				$responses[$methodval] = $this->response[$r][0];
-			}
+			$responses[$methodval] = $this->response[$r][0];
 		}
 
Index: src/index.php
===================================================================
--- src/index.php	(revision e432cd703d679cc8efe509cc755a10e410af9dfe)
+++ src/index.php	(revision aeda99629124019deeb4433aaf24f71f3ee6a39c)
@@ -53,4 +53,69 @@
 
 function prepare_serverinfo_responses( &$responses, &$message, &$config ) {
+	foreach (array_keys($responses) as $key) {
+		$oldkey = str_replace(".", "_", $key);
+		$oldkey = str_replace("=", "", $oldkey);
+		$responses[$oldkey] = $responses[$key];
+	}
+
+	$responses["dht_statistics"] = $responses["dht.statistics"];
+	$responses["bind"] = $responses["network.bind_address"];
+	$responses["check_hash"] = $responses["pieces.hash.on_completion"];
+	$responses["connection_leech"] = $responses["protocol.connection.leech"];
+	$responses["connection_seed"] = $responses["protocol.connection.seed"];
+	$responses["dht_port"] = $responses["dht.port"];
+	$responses["directory"] = $responses["directory.default"];
+	$responses["download_rate"] = $responses["throttle.global_down.max_rate"];
+	$responses["http_cacert"] = $responses["network.http.cacert"];
+	$responses["http_capath"] = $responses["network.http.capath"];
+	$responses["http_proxy"] = $responses["network.http.proxy_address"];
+	$responses["ip"] = $responses["network.local_address"];
+	$responses["max_downloads_div"] = $responses["throttle.max_downloads.div"];
+	$responses["max_downloads_global"] = $responses["throttle.max_downloads.global"];
+	$responses["max_file_size"] = $responses["system.file.max_size"];
+	$responses["max_memory_usage"] = $responses["pieces.memory.max"];
+	$responses["max_open_files"] = $responses["network.max_open_files"];
+	$responses["max_open_http"] = $responses["network.http.max_open"];
+	$responses["max_open_sockets"] = $responses["network.max_open_sockets"];
+	$responses["max_peers"] = $responses["throttle.max_peers.normal"];
+	$responses["max_peers_seed"] = $responses["throttle.max_peers.seed"];
+	$responses["max_uploads"] = $responses["throttle.max_uploads"];
+	$responses["max_uploads_div"] = $responses["throttle.max_uploads.div"];
+	$responses["max_uploads_global"] = $responses["throttle.max_uploads.global"];
+	$responses["memory_usage"] = $responses["pieces.memory.current"];
+	$responses["min_peers"] = $responses["throttle.min_peers.normal"];
+	$responses["min_peers_seed"] = $responses["throttle.min_peers.seed"];
+	$responses["name"] = $responses["session.name"];
+	$responses["peer_exchange"] = $responses["protocol.pex"];
+	$responses["port_open"] = $responses["network.port_open"];
+	$responses["port_random"] = $responses["network.port_random"];
+	$responses["port_range"] = $responses["network.port_range"];
+	$responses["preload_min_size"] = $responses["pieces.preload.min_size"];
+	$responses["preload_required_rate"] = $responses["pieces.preload.min_rate"];
+	$responses["preload_type"] = $responses["pieces.preload.type"];
+	$responses["proxy_address"] = $responses["network.proxy_address"];
+	$responses["receive_buffer_size"] = $responses["network.receive_buffer.size"];
+	$responses["safe_sync"] = $responses["pieces.sync.always_safe"];
+	$responses["scgi_dont_route"] = $responses["network.scgi.dont_route"];
+	$responses["send_buffer_size"] = $responses["network.send_buffer.size"];
+	$responses["session"] = $responses["session.path"];
+	$responses["session_lock"] = $responses["session.use_lock"];
+	$responses["session_on_completion"] = $responses["session.on_completion"];
+	$responses["split_file_size"] = $responses["system.file.split_size"];
+	$responses["split_suffix"] = $responses["system.file.split_suffix"];
+	$responses["stats_not_preloaded"] = $responses["pieces.stats_not_preloaded"];
+	$responses["stats_preloaded"] = $responses["pieces.stats_preloaded"];
+	$responses["timeout_safe_sync"] = $responses["pieces.sync.timeout_safe"];
+	$responses["timeout_sync"] = $responses["pieces.sync.timeout"];
+	$responses["tracker_numwant"] = $responses["trackers.numwant"];
+	$responses["upload_rate"] = $responses["throttle.global_up.max_rate"];
+	$responses["use_udp_trackers"] = $responses["trackers.use_udp"];
+	$responses["client_version"] = $responses["system.client_version"];
+	$responses["cwd"] = $responses["system.cwd"];
+	$responses["hostname"] = $responses["system.hostname"];
+	$responses["library_version"] = $responses["system.library_version"];
+	$responses["pid"] = $responses["system.pid"];
+	$responses["view_list"] = $responses["view.list"];
+
 	$bytes_down_arr = switch_bytes( $responses["bytes_down"] );
 	$bytes_up_arr = switch_bytes( $responses["bytes_up"] );
@@ -102,6 +167,6 @@
 	$responses["tracker_numwant_value"] = $responses["tracker_numwant"] == -1 ? $message["disabled"] : $responses["tracker_numwant"];
 
-	$responses["directory_value"] = myrealpath( $responses["directory"], $config["home_path"], $responses["cwd"] );
-	$responses["session_value"] = myrealpath( $responses["session"], $config["home_path"], $responses["cwd"] );
+	$responses["directory_value"] = myrealpath( $responses["directory"], $config["home_path"], $responses["system.cwd"] );
+	$responses["session_value"] = myrealpath( $responses["session"], $config["home_path"], $responses["system.cwd"] );
 
 	if ( $responses["max_file_size"] == -1 ) {
@@ -141,4 +206,17 @@
 
 function prepare_downloadlist_responses( &$responses, &$message, &$home_path, &$cwd ) {
+	foreach (array_keys($responses) as $key) {
+		$oldkey = str_replace(".", "_", $key);
+		$oldkey = str_replace("=", "", $oldkey);
+		$responses[$oldkey] = $responses[$key];
+	}
+	$responses["d_active"] = $responses["d.state="];
+	$responses["d_down_rate"] = $responses["d.down.rate="];
+	$responses["d_down_total"] = $responses["d.down.total="];
+	$responses["d_skip_rate"] = $responses["d.skip.rate="];
+	$responses["d_skip_total"] = $responses["d.skip.total="];
+	$responses["d_up_rate"] = $responses["d.up.rate="];
+	$responses["d_up_total"] = $responses["d.up.total="];
+
 	$d_bytes_done_arr = switch_bytes( $responses["d_bytes_done"] );
 	$d_chunk_size_arr = switch_bytes( $responses["d_chunk_size"] );
@@ -219,6 +297,6 @@
 		$responses["d_estimated_time"] = "";
 		$responses["d_estimated_time_value"] = "";
-		$responses["d_percentage"] = $responses["d_completed_bytes"] / $responses["d_size_bytes"];
-		$responses["d_percentage_value"] = floor( $responses["d_completed_bytes"] / $responses["d_size_bytes"] * 100 );
+		$responses["d_percentage"] = $responses["d.completed_bytes="] / $responses["d.size_bytes="];
+		$responses["d_percentage_value"] = floor( $responses["d.completed_bytes="] / $responses["d.size_bytes="] * 100 );
 	} else {
 		$responses["d_estimated_time"] = "";
@@ -254,4 +332,10 @@
 
 function prepare_filelist_responses( &$responses, &$message, &$home_path, &$cwd ) {
+	foreach (array_keys($responses) as $key) {
+		$oldkey = str_replace(".", "_", $key);
+		$oldkey = str_replace("=", "", $oldkey);
+		$responses[$oldkey] = $responses[$key];
+	}
+
 	$responses["f_last_touched"] = sprintf( "%.0f", $responses["f_last_touched"] );
 	$responses["f_range_first"] += 1;
@@ -287,4 +371,10 @@
 
 function prepare_peerlist_responses( &$responses, &$message, &$config = array() ) {
+	foreach (array_keys($responses) as $key) {
+		$oldkey = str_replace(".", "_", $key);
+		$oldkey = str_replace("=", "", $oldkey);
+		$responses[$oldkey] = $responses[$key];
+	}
+
 	if ( $config["flags"] === "1" ) {
 		$responses["p_country"] = strtolower( geoip_country_code_by_name( $responses["p_address"] ) );
@@ -326,4 +416,10 @@
 
 function prepare_trackerlist_responses( &$responses, &$message ) {
+	foreach (array_keys($responses) as $key) {
+		$oldkey = str_replace(".", "_", $key);
+		$oldkey = str_replace("=", "", $oldkey);
+		$responses[$oldkey] = $responses[$key];
+	}
+
 	$t_scrape_downloaded_arr = switch_bytes( $responses["t_scrape_downloaded"] );
 
@@ -408,5 +504,6 @@
 	$keys = array_keys( $responses );
 	reset( $responses );
-	while ( list( $rkey, $rval ) = each( $responses ) ) {
+	while ( list( $rkey, $rval ) = @each( $responses ) ) {
+		$rkey = str_replace( "=", "", $rkey);
 		$rval = str_replace( "&", "&amp;", $rval );
 		if ( array_key_exists( "{$rkey}_suffix", $responses ) ) {
@@ -459,11 +556,11 @@
 $xmlrpc_methods = array(
 	"si"	=> $config["dht"] === "1" ? 
-			array( "dht_statistics", "get_bind", "get_check_hash", "get_connection_leech", "get_connection_seed", "get_dht_port", "get_directory", "get_download_rate", "get_http_cacert", "get_http_capath", "get_http_proxy", "get_ip", "get_max_downloads_div", "get_max_downloads_global", "get_max_file_size", "get_max_memory_usage", "get_max_open_files", "get_max_open_http", "get_max_open_sockets", "get_max_peers", "get_max_peers_seed", "get_max_uploads", "get_max_uploads_div", "get_max_uploads_global", "get_memory_usage", "get_min_peers", "get_min_peers_seed", "get_name", "get_peer_exchange", "get_port_open", "get_port_random", "get_port_range", "get_preload_min_size", "get_preload_required_rate", "get_preload_type", "get_proxy_address", "get_receive_buffer_size", "get_safe_sync", "get_scgi_dont_route", "get_send_buffer_size", "get_session", "get_session_lock", "get_session_on_completion", "get_split_file_size", "get_split_suffix", "get_stats_not_preloaded", "get_stats_preloaded", "get_timeout_safe_sync", "get_timeout_sync", "get_tracker_numwant", "get_upload_rate", "get_use_udp_trackers", "system.client_version", "system.cwd", "system.hostname", "system.library_version", "system.pid", "view_list" ) :
-			array( "get_bind", "get_check_hash", "get_connection_leech", "get_connection_seed", "get_directory", "get_download_rate", "get_http_cacert", "get_http_capath", "get_http_proxy", "get_ip", "get_max_downloads_div", "get_max_downloads_global", "get_max_file_size", "get_max_memory_usage", "get_max_open_files", "get_max_open_http", "get_max_open_sockets", "get_max_peers", "get_max_peers_seed", "get_max_uploads", "get_max_uploads_div", "get_max_uploads_global", "get_memory_usage", "get_min_peers", "get_min_peers_seed", "get_name", "get_peer_exchange", "get_port_open", "get_port_random", "get_port_range", "get_preload_min_size", "get_preload_required_rate", "get_preload_type", "get_proxy_address", "get_receive_buffer_size", "get_safe_sync", "get_scgi_dont_route", "get_send_buffer_size", "get_session", "get_session_lock", "get_session_on_completion", "get_split_file_size", "get_split_suffix", "get_stats_not_preloaded", "get_stats_preloaded", "get_timeout_safe_sync", "get_timeout_sync", "get_tracker_numwant", "get_upload_rate", "get_use_udp_trackers", "system.client_version", "system.cwd", "system.hostname", "system.library_version", "system.pid", "view_list" ),
-	"d"	=> array( "d.get_base_filename=", "d.get_base_path=", "d.get_bytes_done=", "d.get_chunk_size=", "d.get_chunks_hashed=", "d.get_complete=", "d.get_completed_bytes=", "d.get_completed_chunks=", "d.get_connection_current=", "d.get_connection_leech=", "d.get_connection_seed=", "d.get_creation_date=", "d.get_custom1=", "d.get_custom2=", "d.get_custom3=", "d.get_custom4=", "d.get_custom5=", "d.get_directory=", "d.get_down_rate=", "d.get_down_total=", "d.get_free_diskspace=", "d.get_hash=", "d.get_hashing=", "d.get_ignore_commands=", "d.get_left_bytes=", "d.get_local_id=", "d.get_local_id_html=", "d.get_max_file_size=", "d.get_max_size_pex=", "d.get_message=", "d.get_name=", "d.get_peer_exchange=", "d.get_peers_accounted=", "d.get_peers_complete=", "d.get_peers_connected=", "d.get_peers_max=", "d.get_peers_min=", "d.get_peers_not_connected=", "d.get_priority=", "d.get_priority_str=", "d.get_ratio=", "d.get_size_bytes=", "d.get_size_chunks=", "d.get_size_files=", "d.get_size_pex=", "d.get_skip_rate=", "d.get_skip_total=", "d.get_state=", "d.get_state_changed=", "d.get_tied_to_file=", "d.get_tracker_focus=", "d.get_tracker_numwant=", "d.get_tracker_size=", "d.get_up_rate=", "d.get_up_total=", "d.get_uploads_max=", "d.is_active=", "d.is_hash_checked=", "d.is_hash_checking=", "d.is_multi_file=", "d.is_open=", "d.is_pex_active=", "d.is_private=" ),
-	"f"	=> array( "f.get_completed_chunks=", "f.get_frozen_path=", "f.is_created=", "f.is_open=", "f.get_last_touched=", "f.get_match_depth_next=", "f.get_match_depth_prev=", "f.get_offset=", "f.get_path=", "f.get_path_components=", "f.get_path_depth=", "f.get_priority=", "f.get_range_first=", "f.get_range_second=", "f.get_size_bytes=", "f.get_size_chunks=" ),
-	"p"	=> array( "p.get_address=", "p.get_client_version=", "p.get_completed_percent=", "p.get_down_rate=", "p.get_down_total=", "p.get_id=", "p.get_id_html=", "p.get_options_str=", "p.get_peer_rate=", "p.get_peer_total=", "p.get_port=", "p.get_up_rate=", "p.get_up_total=", "p.is_encrypted=", "p.is_incoming=", "p.is_obfuscated=", "p.is_snubbed=" ),
-	"t"	=> array( "t.get_group=", "t.get_id=", "t.get_min_interval=", "t.get_normal_interval=", "t.get_scrape_complete=", "t.get_scrape_downloaded=", "t.get_scrape_incomplete=", "t.get_scrape_time_last=", "t.get_type=", "t.get_url=", "t.is_enabled=", "t.is_open=" ),
-	"g"	=> array( "d.get_name", "d.get_directory", "f.get_path", "f.get_frozen_path", "f.get_size_bytes" ),
+			array( "dht.statistics", "network.bind_address", "pieces.hash.on_completion", "protocol.connection.leech", "protocol.connection.seed", "dht.port", "directory.default", "throttle.global_down.max_rate", "network.http.cacert", "network.http.capath", "network.http.proxy_address", "network.local_address", "throttle.max_downloads.div", "throttle.max_downloads.global", "system.file.max_size", "pieces.memory.max", "network.max_open_files", "network.http.max_open", "network.max_open_sockets", "throttle.max_peers.normal", "throttle.max_peers.seed", "throttle.max_uploads", "throttle.max_uploads.div", "throttle.max_uploads.global", "pieces.memory.current", "throttle.min_peers.normal", "throttle.min_peers.seed", "session.name", "protocol.pex", "network.port_open", "network.port_random", "network.port_range", "pieces.preload.min_size", "pieces.preload.min_rate", "pieces.preload.type", "network.proxy_address", "network.receive_buffer.size", "pieces.sync.always_safe", "network.scgi.dont_route", "network.send_buffer.size", "session.path", "session.use_lock", "session.on_completion", "system.file.split_size", "system.file.split_suffix", "pieces.stats_not_preloaded", "pieces.stats_preloaded", "pieces.sync.timeout_safe", "pieces.sync.timeout", "trackers.numwant", "throttle.global_up.max_rate", "trackers.use_udp", "system.client_version", "system.cwd", "system.hostname", "system.library_version", "system.pid", "view.list" ) :
+			array( "network.bind_address", "pieces.hash.on_completion", "protocol.connection.leech", "protocol.connection.seed", "directory.default", "throttle.global_down.max_rate", "network.http.cacert", "network.http.capath", "network.http.proxy_address", "network.local_address", "throttle.max_downloads.div", "throttle.max_downloads.global", "system.file.max_size", "pieces.memory.max", "network.max_open_files", "network.http.max_open", "network.max_open_sockets", "throttle.max_peers.normal", "throttle.max_peers.seed", "throttle.max_uploads", "throttle.max_uploads.div", "throttle.max_uploads.global", "pieces.memory.current", "throttle.min_peers.normal", "throttle.min_peers.seed", "session.name", "protocol.pex", "network.port_open", "network.port_random", "network.port_range", "pieces.preload.min_size", "pieces.preload.min_rate", "pieces.preload.type", "network.proxy_address", "network.receive_buffer.size", "pieces.sync.always_safe", "network.scgi.dont_route", "network.send_buffer.size", "session.path", "session.use_lock", "session.on_completion", "system.file.split_size", "system.file.split_suffix", "pieces.stats_not_preloaded", "pieces.stats_preloaded", "pieces.sync.timeout_safe", "pieces.sync.timeout", "trackers.numwant", "throttle.global_up.max_rate", "trackers.use_udp", "system.client_version", "system.cwd", "system.hostname", "system.library_version", "system.pid", "view.list" ),
+	"d"	=> array( "d.base_filename=", "d.base_path=", "d.bytes_done=", "d.chunk_size=", "d.chunks_hashed=", "d.complete=", "d.completed_bytes=", "d.completed_chunks=", "d.connection_current=", "d.connection_leech=", "d.connection_seed=", "d.creation_date=", "d.custom1=", "d.custom2=", "d.custom3=", "d.custom4=", "d.custom5=", "d.directory=", "d.down.rate=", "d.down.total=", "d.free_diskspace=", "d.hash=", "d.hashing=", "d.ignore_commands=", "d.left_bytes=", "d.local_id=", "d.local_id_html=", "d.max_file_size=", "d.max_size_pex=", "d.message=", "d.name=", "d.peer_exchange=", "d.peers_accounted=", "d.peers_complete=", "d.peers_connected=", "d.peers_max=", "d.peers_min=", "d.peers_not_connected=", "d.priority=", "d.priority_str=", "d.ratio=", "d.size_bytes=", "d.size_chunks=", "d.size_files=", "d.size_pex=", "d.skip.rate=", "d.skip.total=", "d.state=", "d.state_changed=", "d.tied_to_file=", "d.tracker_focus=", "d.tracker_numwant=", "d.tracker_size=", "d.up.rate=", "d.up.total=", "d.uploads_max=", "d.is_active=", "d.is_hash_checked=", "d.is_hash_checking=", "d.is_multi_file=", "d.is_open=", "d.is_pex_active=", "d.is_private=" ),
+	"f"	=> array( "f.completed_chunks=", "f.frozen_path=", "f.is_created=", "f.is_open=", "f.last_touched=", "f.match_depth_next=", "f.match_depth_prev=", "f.offset=", "f.path=", "f.path_components=", "f.path_depth=", "f.priority=", "f.range_first=", "f.range_second=", "f.size_bytes=", "f.size_chunks=" ),
+	"p"	=> array( "p.address=", "p.client_version=", "p.completed_percent=", "p.down_rate=", "p.down_total=", "p.id=", "p.id_html=", "p.options_str=", "p.peer_rate=", "p.peer_total=", "p.port=", "p.up_rate=", "p.up_total=", "p.is_encrypted=", "p.is_incoming=", "p.is_obfuscated=", "p.is_snubbed=" ),
+	"t"	=> array( "t.group=", "t.id=", "t.min_interval=", "t.normal_interval=", "t.scrape_complete=", "t.scrape_downloaded=", "t.scrape_incomplete=", "t.scrape_time_last=", "t.type=", "t.url=", "t.is_enabled=", "t.is_open=" ),
+	"g"	=> array( "f.path", "f.frozen_path", "f.size_bytes" ),
 );
 
@@ -645,6 +742,6 @@
 
 			// getting up/down rates for totals
-			$methodlist = array( "d.get_down_rate=", "d.get_up_rate=" );
-			if ( !$xmlrpc->setrequest( "d.multicall", array_merge( array( $_SESSION["rtwi_view"] ), $methodlist ) ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
+			$methodlist = array( "d.down.rate=", "d.up.rate=" );
+			if ( !$xmlrpc->setrequest( "d.multicall2", array_merge( array( '', $_SESSION["rtwi_view"] ), $methodlist ) ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
 				$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 				break;
@@ -694,5 +791,5 @@
 		case "addtorrent" : { // add a new torrent
 			// getting download directory
-			if ( !$xmlrpc->setmrequest( array( "get_directory", "system.cwd" ) ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
+			if ( !$xmlrpc->setmrequest( array( "directory.default", "system.cwd" ) ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
 				$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 				break;
@@ -765,5 +862,5 @@
 
 			// retrieving download info
-			if ( !$xmlrpc->setrequest( "d.multicall", array_merge( array( $_SESSION["rtwi_view"] ), $xmlrpc_methods["d"] ) ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
+			if ( !$xmlrpc->setrequest( "d.multicall2", array_merge( array( $hash, $_SESSION["rtwi_view"] ), $xmlrpc_methods["d"] ) ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
 				$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 				break;
@@ -784,5 +881,5 @@
 
 				// if hash matches save the download data
-				if ( $d_responses[$i]["d_hash"] == $hash ) {
+				if ( $d_responses[$i]["d.hash="] == $hash ) {
 					$torrent = $d_responses[$i];
 				}
@@ -793,5 +890,5 @@
 			if ( is_array( $torrent ) ) {
 				// prepare download variables
-				prepare_downloadlist_responses( $torrent, $message, $config["home_path"], $si_responses["cwd"] );
+				prepare_downloadlist_responses( $torrent, $message, $config["home_path"], $si_responses["system.cwd"] );
 				// decide what to do
 				switch ( $page ) {
@@ -863,5 +960,5 @@
 						$dstruct = array();
 						for ( $i = 0; $i < $torrent["d_size_files"]; $i++ ) {
-							prepare_filelist_responses( $responses[$i], $message, $home_path, $si_responses["cwd"] );
+							prepare_filelist_responses( $responses[$i], $message, $home_path, $si_responses["system.cwd"] );
 
 							$n = 0;
@@ -981,5 +1078,5 @@
 
 				// retrieving download info
-				if ( !$xmlrpc->setrequest( "download_list", array( $_SESSION["rtwi_view"] ) ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
+				if ( !$xmlrpc->setrequest( "download_list", array( "", $_SESSION["rtwi_view"] ) ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
 					$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 					break;
@@ -990,5 +1087,5 @@
 				if ( in_array( $hash, $torrents ) ) {
 					// getting the filename
-					if ( !$xmlrpc->setmrequest( $xmlrpc_methods["g"], array( $hash, $id ) ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
+					if ( !$xmlrpc->setmrequest( $xmlrpc_methods["g"], array( "${hash}:f${id}" ) ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
 						$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 						break;
@@ -997,5 +1094,5 @@
 
 					// getting the absolute path of the download's directory
-					$d_directory_value = myrealpath( $response["d_directory"], $config["home_path"], $si_responses["cwd"] );
+					$d_directory_value = myrealpath( dirname($response["f.frozen_path"]), $config["home_path"], $si_responses["system.cwd"] );
 				} else {
 					$_SESSION["rtwi_err"] = "nohashfound";
@@ -1017,5 +1114,5 @@
 			$tnode = $root->appendChild( $xml->createElement( "torrents" ) );
 			// adding sort view select
-			addviewtypes( $xml, $root, $tnode, $si_responses["view_list"], $viewtypes );
+			addviewtypes( $xml, $root, $tnode, $si_responses["view.list"], $viewtypes );
 			// adding auto-refresh select
 			if ( $config["refresh"] ) {
@@ -1027,5 +1124,5 @@
 			}
 			// retrieving download info
-			if ( !$xmlrpc->setrequest( "d.multicall", array_merge( array( $_SESSION["rtwi_view"] ), $xmlrpc_methods["d"] ) ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
+			if ( !$xmlrpc->setrequest( "d.multicall2", array_merge( array( '', $_SESSION["rtwi_view"] ), $xmlrpc_methods["d"] ) ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
 				$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 				break;
@@ -1047,5 +1144,5 @@
 
 				// formatting and inserting values to xml
-				prepare_downloadlist_responses( $d_responses[$i], $message, $home_path, $si_responses["cwd"] );
+				prepare_downloadlist_responses( $d_responses[$i], $message, $home_path, $si_responses["system.cwd"] );
 				$ttnode = $tnode->appendChild( $xml->createElement( "torrent" ) );
 				xmlrpc_multiappend( $xml, $ttnode, $d_responses[$i] );
@@ -1146,9 +1243,8 @@
 } else { // sending file to download
 	// getting the filename
-	$path = "{$d_directory_value}/{$response["f_path"]}";
+	$path = "{$d_directory_value}/{$response["f.path"]}";
 	$filesize = filesize( $path );
 
-	// set time limit to 0, so the user actually can download the whole file
-	set_time_limit( 0 );
+	// set time limit to 0, so the user actually can download the whole file set_time_limit( 0 );
 
 	// sending headers
@@ -1156,5 +1252,5 @@
 	@header( "Content-Type: application/force-download" );
 	@header( "Content-Length: {$filesize}" );
-	@header( "Content-Disposition: attachment; filename=\"{$response["f_path"]}\"" );
+	@header( "Content-Disposition: attachment; filename=\"{$response["f.path"]}\"" );
 	
 	// sending the file
Index: src/input.php
===================================================================
--- src/input.php	(revision e432cd703d679cc8efe509cc755a10e410af9dfe)
+++ src/input.php	(revision aeda99629124019deeb4433aaf24f71f3ee6a39c)
@@ -122,5 +122,5 @@
 	case "changeview" : { // change view
 		if ( isset( $_REQUEST["viewtype"] ) && $_REQUEST["viewtype"] != "" ) {
-			if ( !$xmlrpc->setrequest( "view_list", "" ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
+			if ( !$xmlrpc->setrequest( "view.list", "" ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
 				$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 				header( "location: {$config["index"]}" );
@@ -225,10 +225,10 @@
 			}
 
-			if ( !$xmlrpc->setrequest( "set_upload_rate", $upspeed * 1024 ) || !$xmlrpc->call() ) {
+			if ( !$xmlrpc->setrequest( "throttle.global_up.max_rate.set_kb", array(0, $upspeed) ) || !$xmlrpc->call() ) {
 				$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 				header( "location: {$_SESSION["rtwi_lastpage"]}" );
 				exit;
 			}
-			if ( !$xmlrpc->setrequest( "set_download_rate", $downspeed * 1024 ) || !$xmlrpc->call() ) {
+			if ( !$xmlrpc->setrequest( "throttle.global_down.max_rate.set_kb", array(0, $downspeed) ) || !$xmlrpc->call() ) {
 				$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 				header( "location: {$_SESSION["rtwi_lastpage"]}" );
@@ -261,5 +261,5 @@
 		$torrents = $xmlrpc->fetch();
 
-		if ( !$xmlrpc->setmrequest( array( "get_directory", "system.cwd" ) ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
+		if ( !$xmlrpc->setmrequest( array( "directory.default", "system.cwd" ) ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
 			$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 			header( "location: {$config["index"]}?mod=addtorrent}" );
@@ -363,10 +363,15 @@
 
 		if ( $_REQUEST["tfmethod"] == "url" || isset( $_REQUEST["keeptorrentfile"] ) && $_REQUEST["keeptorrentfile"] == "on"  ) {
-			$method = "load";
-		} else {
-			$method = "load_raw";
-		}
-		if ( isset( $_REQUEST["torrentstart"] ) && $_REQUEST["torrentstart"] == "start" ) {
-			$method = "{$method}_start";
+			if ( isset( $_REQUEST["torrentstart"] ) && $_REQUEST["torrentstart"] == "start" ) {
+				$method = "load.start";
+			} else {
+				$method = "load.normal";
+			}
+		} else {
+			if ( isset( $_REQUEST["torrentstart"] ) && $_REQUEST["torrentstart"] == "start" ) {
+				$method = "load.raw_start";
+			} else {
+				$method = "load.raw";
+			}
 		}
 		if ( !$xmlrpc->setrequest( $method, $param ) || !$xmlrpc->call() ) {
@@ -570,13 +575,12 @@
 		}
 
-		if ( !$xmlrpc->setrequest( "d.get_base_path", $hash ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
-			$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
-			header( "location: {$config["index"]}" );
-			exit;
-		}
-
+		if ( !$xmlrpc->setrequest( "d.base_path", $hash ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
+			$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
+			header( "location: {$config["index"]}" );
+			exit;
+		}
 		$response = $xmlrpc->fetch();
 
-		if ( !$xmlrpc->setrequest( "execute", array( "rm", "-rf", "--", $response ) ) || !$xmlrpc->call() ) {
+		if ( !$xmlrpc->setrequest( "execute", array( "", "rm", "-rf", "--", $response ) ) || !$xmlrpc->call() ) {
 			$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 			header( "location: {$config["index"]}" );
@@ -600,5 +604,5 @@
 		switch ( $_REQUEST["task"] ) {
 			case "start" : {
-				if ( !$xmlrpc->setrequest( "d.multicall", array( $_SESSION["rtwi_view"], "d.start=" ) ) || !$xmlrpc->call() ) {
+				if ( !$xmlrpc->setrequest( "d.multicall2", array( "", $_SESSION["rtwi_view"], "d.start=" ) ) || !$xmlrpc->call() ) {
 					$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 					header( "location: {$config["index"]}" );
@@ -615,5 +619,5 @@
 			}
 			case "stop" : {
-				if ( !$xmlrpc->setrequest( "d.multicall", array( $_SESSION["rtwi_view"], "d.stop=" ) ) || !$xmlrpc->call() ) {
+				if ( !$xmlrpc->setrequest( "d.multicall2", array( "", $_SESSION["rtwi_view"], "d.stop=" ) ) || !$xmlrpc->call() ) {
 					$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 					header( "location: {$config["index"]}" );
@@ -630,5 +634,5 @@
 			}
 			case "open" : {
-				if ( !$xmlrpc->setrequest( "d.multicall", array( $_SESSION["rtwi_view"], "d.open=" ) ) || !$xmlrpc->call() ) {
+				if ( !$xmlrpc->setrequest( "d.multicall2", array( "", $_SESSION["rtwi_view"], "d.open=" ) ) || !$xmlrpc->call() ) {
 					$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 					header( "location: {$config["index"]}" );
@@ -645,5 +649,5 @@
 			}
 			case "close" : {
-				if ( !$xmlrpc->setrequest( "d.multicall", array( $_SESSION["rtwi_view"], "d.stop=", "d.close=" ) ) || !$xmlrpc->call() ) {
+				if ( !$xmlrpc->setrequest( "d.multicall2", array( "", $_SESSION["rtwi_view"], "d.stop=", "d.close=" ) ) || !$xmlrpc->call() ) {
 					$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 					header( "location: {$config["index"]}" );
@@ -660,5 +664,5 @@
 			}
 			case "checkhash" : {
-				if ( !$xmlrpc->setrequest( "d.multicall", array( $_SESSION["rtwi_view"], "d.check_hash=" ) ) || !$xmlrpc->call() ) {
+				if ( !$xmlrpc->setrequest( "d.multicall2", array( "", $_SESSION["rtwi_view"], "d.check_hash=" ) ) || !$xmlrpc->call() ) {
 					$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 					header( "location: {$config["index"]}" );
@@ -675,5 +679,5 @@
 			}
 			case "remove" : {
-				if ( !$xmlrpc->setrequest( "d.multicall", array( $_SESSION["rtwi_view"], "d.erase=" ) ) || !$xmlrpc->call() ) {
+				if ( !$xmlrpc->setrequest( "d.multicall2", array( "", $_SESSION["rtwi_view"], "d.erase=" ) ) || !$xmlrpc->call() ) {
 					$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 					header( "location: {$config["index"]}" );
@@ -729,5 +733,5 @@
 		}
 
-		if ( !$xmlrpc->setrequest( "d.set_priority", array( $hash, $priority ) ) || !$xmlrpc->call() ) {
+		if ( !$xmlrpc->setrequest( "d.priority.set", array( $hash, $priority ) ) || !$xmlrpc->call() ) {
 			$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 			header( "location: {$config["index"]}" );
@@ -772,5 +776,5 @@
 		}
 
-		if ( !$xmlrpc->setrequest( "d.get_size_files", $hash ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
+		if ( !$xmlrpc->setrequest( "d.size_files", $hash ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
 			$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 			header( "location: {$tourl}" );
@@ -800,5 +804,5 @@
 		}
 
-		if ( !$xmlrpc->setrequest( "f.set_priority", array( $hash, $id, $filepriority ) ) || !$xmlrpc->call() ) {
+		if ( !$xmlrpc->setrequest( "f.priority.set", array( $hash, $id, $filepriority ) ) || !$xmlrpc->call() ) {
 			$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 			header( "location: {$tourl}" );
@@ -947,5 +951,5 @@
 		}
 
-		if ( !$xmlrpc->setrequest( "d.get_tracker_size", $hash ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
+		if ( !$xmlrpc->setrequest( "d.tracker_size", $hash ) || !$xmlrpc->call() || !$xmlrpc->parse() ) {
 			$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 			header( "location: {$tourl}" );
@@ -975,5 +979,5 @@
 		}
 
-		if ( !$xmlrpc->setrequest( "t.set_enabled", array( $hash, $id, $trackerenabled ) ) || !$xmlrpc->call() ) {
+		if ( !$xmlrpc->setrequest( "t.is_enabled.set", array( $hash, $id, $trackerenabled ) ) || !$xmlrpc->call() ) {
 			$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 			header( "location: {$tourl}" );
@@ -1006,5 +1010,5 @@
 		$dhtstatus = $dhtstatus == 1 ? "on" : "off";
 
-		if ( !$xmlrpc->setrequest( "dht", $dhtstatus ) || !$xmlrpc->call() ) {
+		if ( !$xmlrpc->setrequest( "dht.mode.set", $dhtstatus ) || !$xmlrpc->call() ) {
 			$_SESSION["rtwi_err"] = $xmlrpc->geterrors();
 			header( "location: {$config["index"]}?mod=serverinfo" );
