diff --git a/src/helper/node.rs b/src/helper/node.rs
index 924b143..3190b22 100644
--- a/src/helper/node.rs
+++ b/src/helper/node.rs
@@ -56,9 +56,13 @@ impl Helper {
     }
     pub fn build_node_args(state: &crate::disk::state::Node) -> Vec<String> {
         let mut args = Vec::with_capacity(500);
-        if !state.arguments.is_empty() {
-            args.push(state.arguments.clone());
-            return args;
+        if !state.arguments.is_empty() && !state.simple {
+            // This parses the input
+            // todo: set the state if user change port and token
+            for arg in state.arguments.split_whitespace() {
+                let arg = if arg == "localhost" { "127.0.0.1" } else { arg };
+                args.push(arg.to_string());
+            }
         }
 
         // [Simple]
diff --git a/src/helper/xrig/xmrig_proxy.rs b/src/helper/xrig/xmrig_proxy.rs
index 2a81c49..41eea8b 100644
--- a/src/helper/xrig/xmrig_proxy.rs
+++ b/src/helper/xrig/xmrig_proxy.rs
@@ -114,8 +114,12 @@ impl Helper {
         let port;
         // custom args from user input
         if !state.arguments.is_empty() && !state.simple {
-            args.push(state.arguments.clone());
-            return args;
+            // This parses the input
+            // todo: set the state if user change port and token
+            for arg in state.arguments.split_whitespace() {
+                let arg = if arg == "localhost" { "127.0.0.1" } else { arg };
+                args.push(arg.to_string());
+            }
         }
         // [Simple]
         if state.simple {
@@ -529,7 +533,7 @@ impl PubXmrigProxyApi {
         *gui_api = Self {
             output,
             node,
-            ..std::mem::take(pub_api)
+            ..pub_api.clone()
         };
         if !buf.is_empty() {
             gui_api.output.push_str(&buf);