Index: trunk/FACT++/src/InterpreterV8.cc
===================================================================
--- trunk/FACT++/src/InterpreterV8.cc	(revision 14673)
+++ trunk/FACT++/src/InterpreterV8.cc	(revision 14674)
@@ -217,4 +217,13 @@
     string command = *str;
 
+    if (command.length()==0)
+        return ThrowException(String::New("Server name empty."));
+
+    if (args.Length()==0)
+    {
+        if (command.find_first_of('/')==string::npos)
+            command += "/";
+    }
+
     // Escape all string arguments. All others can be kept as they are.
     for (int i=1; i<args.Length(); i++)
@@ -233,5 +242,13 @@
     }
 
-    return Boolean::New(JsSend(command));
+    try
+    {
+        return Boolean::New(JsSend(command));
+    }
+    catch (const runtime_error &e)
+    {
+        return ThrowException(String::New(e.what()));
+    }
+
 }
 
Index: trunk/FACT++/src/RemoteControl.cc
===================================================================
--- trunk/FACT++/src/RemoteControl.cc	(revision 14673)
+++ trunk/FACT++/src/RemoteControl.cc	(revision 14674)
@@ -3,5 +3,5 @@
 // ==========================================================================
 
-bool RemoteControlImp::ProcessCommand(const std::string &str)
+bool RemoteControlImp::ProcessCommand(const std::string &str, bool change)
 {
     if (fCurrentServer.empty())
@@ -10,6 +10,8 @@
         const size_t p2 = str.find_first_of('/');
 
+        const bool is_cmd = p2!=string::npos && p1>p2;
+
         string s = str;
-        if (p2!=string::npos && p1>p2)
+        if (is_cmd)
             s = str.substr(0, p2);
 
@@ -17,13 +19,22 @@
         {
             const string c = str.substr(p2+1);
-            return !SendDimCommand(lout, s, c);
+            return SendDimCommand(lout, s, c, !change);
         }
 
         if (HasServer(s))
         {
+            if (!change)
+                return SendDimCommand(lout, str, "", !change);
+
             fCurrentServer = s;
             return true;
         }
-        lout << kRed << "Unkown server '" << s << "'" << endl;
+
+        if (!change && is_cmd)
+            throw runtime_error("Unkown server '"+s+"'");
+
+        if (change)
+            lout << kRed << "Unkown server '" << s << "'" << endl;
+
         return false;
     }
@@ -34,6 +45,5 @@
         return true;
     }
-
-    return SendDimCommand(lout, fCurrentServer, str);
+    return SendDimCommand(lout, fCurrentServer, str, !change);
 }
 
Index: trunk/FACT++/src/RemoteControl.h
===================================================================
--- trunk/FACT++/src/RemoteControl.h	(revision 14673)
+++ trunk/FACT++/src/RemoteControl.h	(revision 14674)
@@ -34,8 +34,8 @@
     }
     virtual ~RemoteControlImp() { }
-    bool ProcessCommand(const std::string &str);
+    bool ProcessCommand(const std::string &str, bool change=true);
 
     virtual bool HasServer(const std::string &) { return false; }
-    virtual bool SendDimCommand(ostream &, std::string &, const std::string &) { return false; }
+    virtual bool SendDimCommand(ostream &, const std::string &, const std::string &, bool = false) { return false; }
 };
 
@@ -144,12 +144,12 @@
     int PrintDescription(std::ostream &out, bool iscmd, const std::string &serv="", const std::string &service="") const
     { return fImp ? fImp->PrintDescription(out, iscmd, serv, service) : 0; }
-    bool SendDimCommand(ostream &out, std::string &server, const std::string &str)
-    {
+    bool SendDimCommand(ostream &out, const std::string &server, const std::string &str, bool do_throw=false)
+    {
+        if (do_throw)
+            return fImp ? fImp->SendDimCommand(server, str, out) : false;
+
         try
         {
-            if (fImp)
-                fImp->SendDimCommand(server, str, out);
-            //lout << kGreen << "Command emitted successfully to " << server << "." << endl;
-            return true;
+            return fImp ? fImp->SendDimCommand(server, str, out) : false;
         }
         catch (const runtime_error &e)
@@ -165,5 +165,5 @@
     void  JsStart(const std::string &)        { SetSection(-2); }
     void  JsEnd(const std::string &)          { UnsubscribeAll(); SetSection(-4); }
-    bool  JsSend(const std::string &str)      { return ProcessCommand(str); }
+    bool  JsSend(const std::string &str)      { return ProcessCommand(str, false); }
     void  JsOut(const std::string &msg)       { lin << msg << endl; }
     void  JsPrint(const std::string &msg)     { if (fImp) fImp->Comment(msg.empty()?" ":msg); }
Index: trunk/FACT++/src/StateMachineDimControl.cc
===================================================================
--- trunk/FACT++/src/StateMachineDimControl.cc	(revision 14673)
+++ trunk/FACT++/src/StateMachineDimControl.cc	(revision 14674)
@@ -133,10 +133,10 @@
 }
 
-void StateMachineDimControl::SendDimCommand(const string &server, string str, ostream &lout)
+bool StateMachineDimControl::SendDimCommand(const string &server, string str, ostream &lout)
 {
     const lock_guard<mutex> guard(fMutex);
 
     if (fServerList.find(server)==fServerList.end())
-        throw runtime_error("Server '"+server+"' not online.");
+        throw runtime_error("SendDimCommand - Server '"+server+"' not online.");
 
     str = Tools::Trim(str);
@@ -153,4 +153,7 @@
     for (auto is=fServiceList.begin(); is!=fServiceList.end(); is++)
     {
+        if (str.empty() && is->server==server)
+            return true;
+
         if (is->server!=server || is->service!=name)
             continue;
@@ -185,8 +188,11 @@
             throw runtime_error("ERROR - Sending command "+cmd+" failed.");
 
-        return;
-    }
-
-    throw runtime_error("Unkown server '"+server+"'");
+        return true;
+    }
+
+    if (!str.empty())
+        throw runtime_error("SendDimCommand - Format information for "+server+"/"+name+" not yet available.");
+
+    return false;
 }
 
Index: trunk/FACT++/src/StateMachineDimControl.h
===================================================================
--- trunk/FACT++/src/StateMachineDimControl.h	(revision 14673)
+++ trunk/FACT++/src/StateMachineDimControl.h	(revision 14674)
@@ -66,5 +66,5 @@
     State GetServerState(const std::string &server);
 
-    void SendDimCommand(const std::string &server, std::string str, std::ostream &lout);
+    bool SendDimCommand(const std::string &server, std::string str, std::ostream &lout);
 
     void SetStateCallback(const std::function<void(const std::string &, const State &)> &func) { fStateCallback = func; }
