diff --git a/include/core/utils/converter.h b/include/core/utils/converter.h
index 0c9502c4ec0cc12ce041611d3a86d5c035af9d09..7a266d50b2e26eb387ff03ac9ba1f94ab1c39437 100644
--- a/include/core/utils/converter.h
+++ b/include/core/utils/converter.h
@@ -17,6 +17,7 @@
 #include <vector>
 #include <stack>
 #include <list>
+#include <math.h>
 
 /**
    @file
@@ -96,13 +97,21 @@ struct converter<utils::list<A>>{
 template<>
 struct converter<int>{
     static int convert(std::string val){
-        return stod(val);
+        double res;
+        if (modf(stod(val),&res) > 0)
+            throw std::runtime_error("Invalid conversion to int: The number contains decimals: " + val);
+        return res;
     }
 };
 template<>
 struct converter<unsigned int>{
     static unsigned int convert(std::string val){
-        return stod(val);
+        double res;
+        if (modf(stod(val),&res) > 0)
+            throw std::runtime_error("Invalid conversion to unsigned int: The number contains decimals: " + val);
+        if (res < 0)
+            throw std::runtime_error("Invalid conversion to unsigned int: The number is negative: " + val);
+        return res;
     }
 };
 template<>
@@ -114,8 +123,8 @@ struct converter<double>{
 template<>
 struct converter<bool>{
     static bool convert(std::string val){
-        if(val == "true") return true;
-        else if (val == "false") return false;
+        if(val == "true" or val=="True" or val=="TRUE") return true;
+        else if (val == "false" or val=="False" or val=="FALSE") return false;
         else throw std::runtime_error("Invalid conversion to bool (Must be either \"true\" or \"false\"). String provided: " + val);
     }
 };
diff --git a/test/gtest_param_server.cpp b/test/gtest_param_server.cpp
index 1f1f468360e1aa5073606f8ea32e7d82cafbc438..bf427f782f1fbb6e790a498535a8d1c03f56af55 100644
--- a/test/gtest_param_server.cpp
+++ b/test/gtest_param_server.cpp
@@ -9,18 +9,63 @@ using namespace wolf;
 
 std::string wolf_root = _WOLF_ROOT_DIR;
 
-//TEST(ParamsServer, Default)
-//{
-//  auto parser = parse("test/yaml/params1.yaml", wolf_root);
-//  auto params = parser.getParams();
-//  ParamsServer server = ParamsServer(params, parser.sensorsSerialization(), parser.processorsSerialization());
-//  EXPECT_EQ(server.getParam<double>("should_not_exist", "2.6"), 2.6);
-//  EXPECT_EQ(server.getParam<bool>("my_proc_test/voting_active", "true"), false);
-//  EXPECT_NE(server.getParam<unsigned int>("my_proc_test/time_tolerance", "23"), 23);
-//  EXPECT_THROW({ server.getParam<unsigned int>("test error"); }, std::runtime_error);
-//  EXPECT_NE(server.getParam<unsigned int>("my_proc_test/time_tolerance"), 23);
-//  EXPECT_EQ(server.getParam<bool>("my_proc_test/voting_active"), false);
-//}
+TEST(ParamsServer, Default)
+{
+    ParserYaml parser   = ParserYaml("test/yaml/params_basic.yaml", wolf_root);
+    ParamsServer server = ParamsServer(parser.getParams());
+}
+
+TEST(ParamsServer, getParamsOk)
+{
+    ParserYaml parser   = ParserYaml("test/yaml/params_basic.yaml", wolf_root);
+    ParamsServer server = ParamsServer(parser.getParams());
+
+    EXPECT_EQ(server.getParam<int>("int_1"), -3);
+    EXPECT_EQ(server.getParam<int>("int_2"), 0);
+    EXPECT_EQ(server.getParam<int>("int_3"), 6);
+
+    EXPECT_EQ(server.getParam<unsigned int>("uint_1"), 2);
+    EXPECT_EQ(server.getParam<unsigned int>("uint_2"), 0);
+    EXPECT_EQ(server.getParam<unsigned int>("uint_3"), 6);
+
+    EXPECT_EQ(server.getParam<double>("double_1"), 3.6);
+    EXPECT_EQ(server.getParam<double>("double_2"), -3);
+    EXPECT_EQ(server.getParam<double>("double_3"), 3.6);
+
+    EXPECT_EQ(server.getParam<std::string>("string_1"), std::string("wolf"));
+    EXPECT_EQ(server.getParam<std::string>("string_2"), std::string("Wolf"));
+
+    EXPECT_EQ(server.getParam<bool>("bool_1"), true);
+    EXPECT_EQ(server.getParam<bool>("bool_2"), true);
+    EXPECT_EQ(server.getParam<bool>("bool_3"), true);
+    EXPECT_EQ(server.getParam<bool>("bool_4"), true);
+    EXPECT_EQ(server.getParam<bool>("bool_5"), false);
+    EXPECT_EQ(server.getParam<bool>("bool_6"), false);
+    EXPECT_EQ(server.getParam<bool>("bool_7"), false);
+    EXPECT_EQ(server.getParam<bool>("bool_8"), false);
+}
+
+TEST(ParamsServer, getParamsWrong)
+{
+    ParserYaml parser   = ParserYaml("test/yaml/params_basic.yaml", wolf_root);
+    ParamsServer server = ParamsServer(parser.getParams());
+
+    EXPECT_ANY_THROW({ server.getParam<double>("should_not_exist"); });
+
+    EXPECT_ANY_THROW({ server.getParam<int>("int_wrong_1"); });
+    EXPECT_ANY_THROW({ server.getParam<int>("int_wrong_2"); });
+    EXPECT_ANY_THROW({ server.getParam<int>("int_wrong_3"); });
+
+    EXPECT_ANY_THROW({ server.getParam<unsigned int>("uint_wrong_1"); });
+    EXPECT_ANY_THROW({ server.getParam<unsigned int>("uint_wrong_2"); });
+    EXPECT_ANY_THROW({ server.getParam<unsigned int>("uint_wrong_3"); });
+    EXPECT_ANY_THROW({ server.getParam<unsigned int>("uint_wrong_4"); });
+
+    EXPECT_ANY_THROW({ server.getParam<double>("double_wrong_1"); });
+    EXPECT_ANY_THROW({ server.getParam<double>("double_wrong_2"); });
+
+    EXPECT_ANY_THROW({ server.getParam<bool>("bool_wrong_2"); });
+}
 
 int main(int argc, char **argv)
 {
diff --git a/test/yaml/params1.yaml b/test/yaml/params1.yaml
index de23e1f71055b731663efcc424b05fcebe37f5ea..b8d6dd7b62bf8c457dd6de8ce1813d48487af0cc 100644
--- a/test/yaml/params1.yaml
+++ b/test/yaml/params1.yaml
@@ -39,6 +39,3 @@ config:
       sensor_name: "odom"
       plugin: "core"
       follow: "test/yaml/processor_odom_3d.yaml"
-files:
-  - "/home/jcasals/workspace/wip/wolf/lib/libsensor_odo.so"
-  - "/home/jcasals/workspace/wip/wolf/lib/librange_bearing.so"
\ No newline at end of file
diff --git a/test/yaml/params2.yaml b/test/yaml/params2.yaml
index 6829e2d53212689e08d8c9b90290abad6d57631b..1aadb76249e83db650ee7a3c2d55aa0b0bcce2af 100644
--- a/test/yaml/params2.yaml
+++ b/test/yaml/params2.yaml
@@ -36,6 +36,3 @@ config:
       name: "my_proc_test"
       sensor_name: "odom"
       plugin: "core"
-files:
-  - "/home/jcasals/workspace/wip/wolf/lib/libsensor_odo.so"
-  - "/home/jcasals/workspace/wip/wolf/lib/librange_bearing.so"
\ No newline at end of file
diff --git a/test/yaml/params_basic.yaml b/test/yaml/params_basic.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..730381520149ef3d51a8428e4cf08778d869a4ea
--- /dev/null
+++ b/test/yaml/params_basic.yaml
@@ -0,0 +1,35 @@
+config:
+  problem:
+    dim: 2
+    
+  int_1: -3
+  int_2: 0
+  int_3: "6"
+  uint_1: 2
+  uint_2: 0
+  uint_3: "6"
+  double_1: 3.6
+  double_2: -3
+  double_3: "3.6"
+  string_1: wolf
+  string_2: "Wolf"
+  bool_1: true
+  bool_2: True
+  bool_3: TRUE
+  bool_4: "true"
+  bool_5: false
+  bool_6: False
+  bool_7: FALSE
+  bool_8: "false"
+  
+  int_wrong_1: 2.3
+  int_wrong_2: "wolf"
+  int_wrong_3: true
+  uint_wrong_1: -2
+  uint_wrong_2: 3.5
+  uint_wrong_3: "wolf"
+  uint_wrong_4: true
+  double_wrong_1: "wolf"
+  double_wrong_2: true
+  bool_wrong: 1
+