diff --git a/src/main/java/org/nutricraft/Database/Database.java b/src/main/java/org/nutricraft/Database/Database.java
index 9248da07b046e1a6789c3e5f267662b090588a45..30ba5825d2ab385d34653cf83e1757773589a79d 100644
--- a/src/main/java/org/nutricraft/Database/Database.java
+++ b/src/main/java/org/nutricraft/Database/Database.java
@@ -27,4 +27,16 @@ public class Database {
         return connection;
     }
 
+    public void InsertLog(String desc, String endpoint, String ip, String requested_at) {
+        try {
+            Statement statement = this.connection.createStatement();
+            String query = "INSERT INTO logging (description, endpoint, IP, requested_at) VALUES ('" + desc + "', '" + endpoint + "', '" + ip + "','" + requested_at +"')";
+            statement.executeUpdate(query);
+        } catch (Exception e) {
+            e.printStackTrace();
+            System.out.println("Failed to insert log");
+        }
+        System.out.println("Successfully inserted log");
+    }
+
 }
diff --git a/src/main/java/org/nutricraft/Model/LogModel.java b/src/main/java/org/nutricraft/Model/LogModel.java
deleted file mode 100644
index cc527bc63d442e9c4ce65e644adb895b0b330fc9..0000000000000000000000000000000000000000
--- a/src/main/java/org/nutricraft/Model/LogModel.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.nutricraft.Model;
-
-import org.nutricraft.Database.Database;
-
-import java.sql.Statement;
-
-public class LogModel extends Database {
-
-    public LogModel() {
-        super();
-    }
-
-    public String InsertLog(String desc, String endpoint, String ip, String requested_at) {
-        try {
-            Statement statement = this.connection.createStatement();
-            String query = "INSERT INTO logging (description, endpoint, IP, requested_at) VALUES ('" + desc + "', '" + endpoint + "', '" + ip + "','" + requested_at +"')";
-            statement.executeUpdate(query);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return "Failed to insert log";
-        }
-        return "Successfully inserted log";
-    }
-
-}
diff --git a/src/main/java/org/nutricraft/Services/CoinServicesImpl.java b/src/main/java/org/nutricraft/Services/CoinServicesImpl.java
index d433dca3a86c4258be35663ab656ae044259576b..c8248b77550cef7a6cfde8bd535ec5e437b812b1 100644
--- a/src/main/java/org/nutricraft/Services/CoinServicesImpl.java
+++ b/src/main/java/org/nutricraft/Services/CoinServicesImpl.java
@@ -2,26 +2,18 @@ package org.nutricraft.Services;
 
 import org.nutricraft.Database.Database;
 import org.nutricraft.Model.Coins;
-import org.nutricraft.Model.LogModel;
 
-import javax.annotation.Resource;
 import javax.jws.WebMethod;
 import javax.jws.WebService;
-import javax.xml.ws.WebServiceContext;
-import javax.xml.ws.handler.MessageContext;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.Statement;
-import java.sql.Timestamp;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
 @WebService(endpointInterface = "org.nutricraft.Services.CoinServices")
-public class CoinServicesImpl implements CoinServices{
+public class CoinServicesImpl extends Services implements CoinServices{
 
-    @Resource
-    private WebServiceContext wsContext;
     @WebMethod
     public List<Coins> getAllCoins() {
         if(!validateApiKey()){
@@ -132,34 +124,5 @@ public class CoinServicesImpl implements CoinServices{
         }
         return "Failed to delete coins";
     }
-    public Boolean validateApiKey() {
-        MessageContext messageContext = wsContext.getMessageContext();
-        String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring");
-        System.out.println("messageContext: " + queryString);
-        String[] keyValue = queryString.split("=");
-        if(keyValue.length==0 || !keyValue[0].equals("APIkey")){
-            return false;
-        }
-        String apiKey = keyValue[1];
-        System.out.println("API KEY: " + apiKey);
-        if(apiKey.equals("lalala")||apiKey.equals("hahaha")){
-            return true;
-        }else{
-            return false;
-        }
-    }
-    public void log(String description) {
-        MessageContext messageContext = wsContext.getMessageContext();
-        String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring");
-        System.out.println("messageContext: " + queryString);
-        String[] keyValue = queryString.split("=");
-        String apiKey = keyValue[1];
-        System.out.println("API KEY: " + apiKey);
-        String ip = "123";
-        String endpoint = (String) messageContext.get("javax.xml.ws.service.endpoint.address");
-        Timestamp timestamp = new Timestamp(new Date().getTime());
-        LogModel logModel = new LogModel();
-        logModel.InsertLog(description, endpoint, ip, timestamp.toString());
-    }
 
 }
diff --git a/src/main/java/org/nutricraft/Services/LevelCreatorServicesImpl.java b/src/main/java/org/nutricraft/Services/LevelCreatorServicesImpl.java
index 005eb5eb1859558ba9b9f5e28bcbca3fd67bc6ce..2c427e852ed5662057e1ebe375dfe32ab5773ba5 100644
--- a/src/main/java/org/nutricraft/Services/LevelCreatorServicesImpl.java
+++ b/src/main/java/org/nutricraft/Services/LevelCreatorServicesImpl.java
@@ -3,26 +3,18 @@ package org.nutricraft.Services;
 
 import org.nutricraft.Database.Database;
 import org.nutricraft.Model.CreatorLevels;
-import org.nutricraft.Model.LogModel;
 
-import javax.annotation.Resource;
 import javax.jws.WebMethod;
 import javax.jws.WebService;
-import javax.xml.ws.WebServiceContext;
-import javax.xml.ws.handler.MessageContext;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.Statement;
-import java.sql.Timestamp;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
 @WebService(endpointInterface = "org.nutricraft.Services.LevelCreatorServices")
-public class LevelCreatorServicesImpl implements LevelCreatorServices{
+public class LevelCreatorServicesImpl extends Services implements LevelCreatorServices{
 
-    @Resource
-    private WebServiceContext wsContext;
     @WebMethod
     public List<CreatorLevels> getAllLevels(){
         if(!validateApiKey()){
@@ -39,7 +31,7 @@ public class LevelCreatorServicesImpl implements LevelCreatorServices{
             while (result.next()){
                 creator.add(new CreatorLevels(result.getString("id"),result.getInt("exp")));
             }
-            log("Get All Levels");
+            log("Get All Levels Creators");
         }catch (Exception e){
             e.printStackTrace();
         }
@@ -82,11 +74,11 @@ public class LevelCreatorServicesImpl implements LevelCreatorServices{
             String query = "UPDATE creatorlevels SET exp = exp + " + exp + " WHERE id = '" + id + "'";
             statement.executeUpdate(query);
             log("Add Exp");
-            return "Successfully added exp";
+            return "Successfully added exp creator";
         }catch (Exception e){
             e.printStackTrace();
         }
-        return "Failed to add exp";
+        return "Failed to add exp creator";
     }
 
     @WebMethod
@@ -102,11 +94,11 @@ public class LevelCreatorServicesImpl implements LevelCreatorServices{
             String query = "UPDATE creatorlevels SET exp = exp - " + exp + " WHERE id = '" + id + "'";
             statement.executeUpdate(query);
             log("Substract Exp");
-            return "Successfully substract exo";
+            return "Successfully substract exo creator";
         }catch (Exception e){
             e.printStackTrace();
         }
-        return "Failed to subsctract exp";
+        return "Failed to subsctract exp creator";
     }
 
     @WebMethod
@@ -122,40 +114,12 @@ public class LevelCreatorServicesImpl implements LevelCreatorServices{
             String query = "DELETE FROM creatorlevels WHERE id = '" + id + "'";
             statement.executeUpdate(query);
             log("Delete Exp");
-            return "Successfully deleted creatorlevels";
+            return "Successfully deleted creatorlevels ";
         }catch (Exception e){
             e.printStackTrace();
         }
         return "Failed to delete creatorlevels";
     }
 
-    public Boolean validateApiKey() {
-        MessageContext messageContext = wsContext.getMessageContext();
-        String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring");
-        System.out.println("messageContext: " + queryString);
-        String[] keyValue = queryString.split("=");
-        if(keyValue.length==0 || !keyValue[0].equals("APIkey")){
-            return false;
-        }
-        String apiKey = keyValue[1];
-        System.out.println("API KEY: " + apiKey);
-        if(apiKey.equals("lalala")||apiKey.equals("hahaha")){
-            return true;
-        }else{
-            return false;
-        }
-    }
-    public void log(String description) {
-        MessageContext messageContext = wsContext.getMessageContext();
-        String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring");
-        System.out.println("messageContext: " + queryString);
-        String[] keyValue = queryString.split("=");
-        String apiKey = keyValue[1];
-        System.out.println("API KEY: " + apiKey);
-        String ip = "123";
-        String endpoint = (String) messageContext.get("javax.xml.ws.service.endpoint.address");
-        Timestamp timestamp = new Timestamp(new Date().getTime());
-        LogModel logModel = new LogModel();
-        logModel.InsertLog(description, endpoint, ip, timestamp.toString());
-    }
+
 }
diff --git a/src/main/java/org/nutricraft/Services/LevelUserServicesImpl.java b/src/main/java/org/nutricraft/Services/LevelUserServicesImpl.java
index f01711e49c836117a11b6ff7a842d08d6485606b..566f516e8fd4a1ac3e45c005f5f19fede02c88dc 100644
--- a/src/main/java/org/nutricraft/Services/LevelUserServicesImpl.java
+++ b/src/main/java/org/nutricraft/Services/LevelUserServicesImpl.java
@@ -1,28 +1,22 @@
 package org.nutricraft.Services;
 
 import org.nutricraft.Database.Database;
-import org.nutricraft.Model.LogModel;
 import org.nutricraft.Model.UserLevels;
 
-import javax.annotation.Resource;
+
+import javax.jws.WebMethod;
 import javax.jws.WebService;
-import javax.xml.ws.WebServiceContext;
-import javax.xml.ws.handler.MessageContext;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.Statement;
-import java.sql.Timestamp;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
 
 @WebService(endpointInterface = "org.nutricraft.Services.LevelUserServices")
-public class LevelUserServicesImpl implements LevelUserServices {
+public class LevelUserServicesImpl extends Services implements LevelUserServices {
 
-    @Resource
-    private WebServiceContext wsContext;
-    @Override
+    @WebMethod
     public List<UserLevels> getAllLevel() {
         if(!validateApiKey()){
             System.out.println("API KEY INVALID");
@@ -45,7 +39,7 @@ public class LevelUserServicesImpl implements LevelUserServices {
         return user;
     }
 
-    @Override
+    @WebMethod
     public Integer getExp(int id) {
         if(!validateApiKey()){
             System.out.println("API KEY INVALID");
@@ -68,7 +62,7 @@ public class LevelUserServicesImpl implements LevelUserServices {
         return exp;
     }
 
-    @Override
+    @WebMethod
     public String addExp(int id, int exp) {
         if(!validateApiKey()){
             System.out.println("API KEY INVALID");
@@ -88,7 +82,7 @@ public class LevelUserServicesImpl implements LevelUserServices {
         return "Failed to add exp";
     }
 
-    @Override
+    @WebMethod
     public String substractExp(int id, int exp) {
         if(!validateApiKey()){
             System.out.println("API KEY INVALID");
@@ -108,7 +102,7 @@ public class LevelUserServicesImpl implements LevelUserServices {
         return "Failed to subsctract exp";
     }
 
-    @Override
+    @WebMethod
     public String deleteExp(int id) {
         if(!validateApiKey()){
             System.out.println("API KEY INVALID");
@@ -128,33 +122,5 @@ public class LevelUserServicesImpl implements LevelUserServices {
         return "Failed to delete userlevels";
     }
 
-    public Boolean validateApiKey() {
-        MessageContext messageContext = wsContext.getMessageContext();
-        String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring");
-        System.out.println("messageContext: " + queryString);
-        String[] keyValue = queryString.split("=");
-        if(keyValue.length==0 || !keyValue[0].equals("APIkey")){
-            return false;
-        }
-        String apiKey = keyValue[1];
-        System.out.println("API KEY: " + apiKey);
-        if(apiKey.equals("lalala")||apiKey.equals("hahaha")){
-            return true;
-        }else{
-            return false;
-        }
-    }
-    public void log(String description) {
-        MessageContext messageContext = wsContext.getMessageContext();
-        String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring");
-        System.out.println("messageContext: " + queryString);
-        String[] keyValue = queryString.split("=");
-        String apiKey = keyValue[1];
-        System.out.println("API KEY: " + apiKey);
-        String ip = "123";
-        String endpoint = (String) messageContext.get("javax.xml.ws.service.endpoint.address");
-        Timestamp timestamp = new Timestamp(new Date().getTime());
-        LogModel logModel = new LogModel();
-        logModel.InsertLog(description, endpoint, ip, timestamp.toString());
-    }
+
 }
diff --git a/src/main/java/org/nutricraft/Services/Services.java b/src/main/java/org/nutricraft/Services/Services.java
new file mode 100644
index 0000000000000000000000000000000000000000..22dfbe0e24028055a5a1bdb12dcb7b7e23531d0a
--- /dev/null
+++ b/src/main/java/org/nutricraft/Services/Services.java
@@ -0,0 +1,44 @@
+package org.nutricraft.Services;
+
+import org.nutricraft.Database.Database;
+
+import javax.annotation.Resource;
+import javax.xml.ws.WebServiceContext;
+import javax.xml.ws.handler.MessageContext;
+import java.sql.Timestamp;
+import java.util.Date;
+
+public class Services {
+    @Resource
+    private WebServiceContext wsContext;
+    protected Boolean validateApiKey() {
+        MessageContext messageContext = wsContext.getMessageContext();
+        String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring");
+        System.out.println("messageContext: " + queryString);
+        String[] keyValue = queryString.split("=");
+        if(keyValue.length==0 || !keyValue[0].equals("APIkey")){
+            return false;
+        }
+        String apiKey = keyValue[1];
+        System.out.println("API KEY: " + apiKey);
+        if(apiKey.equals("lalala")||apiKey.equals("hahaha")){
+            return true;
+        }else{
+            return false;
+        }
+    }
+    //
+    protected void log(String description) {
+        MessageContext messageContext = wsContext.getMessageContext();
+        String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring");
+        System.out.println("messageContext: " + queryString);
+        String[] keyValue = queryString.split("=");
+        String apiKey = keyValue[1];
+        System.out.println("API KEY: " + apiKey);
+        String ip = "123";
+        String endpoint = (String) messageContext.get("javax.xml.ws.service.endpoint.address");
+        Timestamp timestamp = new Timestamp(new Date().getTime());
+        Database db = new Database();
+        db.InsertLog(description, endpoint, ip, timestamp.toString());
+    }
+}
diff --git a/src/main/java/org/nutricraft/Services/SubscriptionServicesImpl.java b/src/main/java/org/nutricraft/Services/SubscriptionServicesImpl.java
index 257d6a42fe92de62285c8588d6449d6873e6ca9d..f058e7c4258736ee6ee86ef135e3924539996ecb 100644
--- a/src/main/java/org/nutricraft/Services/SubscriptionServicesImpl.java
+++ b/src/main/java/org/nutricraft/Services/SubscriptionServicesImpl.java
@@ -1,31 +1,23 @@
 package org.nutricraft.Services;
 
 import org.nutricraft.Database.Database;
-import org.nutricraft.Model.LogModel;
 import org.nutricraft.Model.Subscibers;
 
-import javax.annotation.Resource;
+
 import javax.jws.WebMethod;
 import javax.jws.WebService;
-import javax.xml.ws.WebServiceContext;
-import javax.xml.ws.handler.MessageContext;
-import javax.xml.ws.spi.http.HttpExchange;
 import java.sql.*;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Date;
-import java.util.Map;
 
 @WebService (endpointInterface = "org.nutricraft.Services.SubscriptionServices")
-public class SubscriptionServicesImpl implements SubscriptionServices{
+public class SubscriptionServicesImpl extends Services implements SubscriptionServices{
 
-    @Resource
-    private WebServiceContext wsContext;
     @WebMethod
     public String newSubscription(String idCreator, int idSubscriber){
         if(!validateApiKey()){
             System.out.println("API KEY INVALID");
-            return null;
+            return "API KEY INVALID";
         }
         try {
             Database db = new Database();
@@ -38,7 +30,7 @@ public class SubscriptionServicesImpl implements SubscriptionServices{
         } catch (Exception e) {
             e.printStackTrace();
         }
-        return "newSubs";
+        return "Failed to insert new subscription";
     }
     @WebMethod
     public Boolean checkSubscription(String idCreator, int idSubscriber){
@@ -144,53 +136,6 @@ public class SubscriptionServicesImpl implements SubscriptionServices{
         }
         return listSubscribers;
     }
-    public Boolean validateApiKey() {
-        MessageContext messageContext = wsContext.getMessageContext();
-        String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring");
-        System.out.println("messageContext: " + queryString);
-        String[] keyValue = queryString.split("=");
-        if(keyValue.length==0 || !keyValue[0].equals("APIkey")){
-            return false;
-        }
-        String apiKey = keyValue[1];
-        System.out.println("API KEY: " + apiKey);
-        if(apiKey.equals("lalala")||apiKey.equals("hahaha")){
-            return true;
-        }else{
-            return false;
-        }
-    }
-//
-    public void log(String description) {
-        MessageContext messageContext = wsContext.getMessageContext();
-        String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring");
-        System.out.println("messageContext: " + queryString);
-        String[] keyValue = queryString.split("=");
-        String apiKey = keyValue[1];
-        System.out.println("API KEY: " + apiKey);
-        String ip = "123";
-        String endpoint = (String) messageContext.get("javax.xml.ws.service.endpoint.address");
-        Timestamp timestamp = new Timestamp(new Date().getTime());
-        LogModel logModel = new LogModel();
-        logModel.InsertLog(description, endpoint, ip, timestamp.toString());
-    }
-}
 
-// Database db = new Database();
-// Connection connection = db.getConn();
-// try{
-//     Statement statement = connection.createStatement();
-//     String query = "SELECT * FROM logging";
-//     ResultSet result = statement.executeQuery(query);
-//     while (result.next()) {
-//         int id = result.getInt("id");
-//         String desc = result.getString("description");
-//         String ip = result.getString("ip");
-//         String endpoint = result.getString("endpoint");
-//         String date = result.getString("date");
+}
 
-//         System.out.println("id: " + id+ " desc: " + desc + " ip: " + ip + " endpoint: " + endpoint + " date: " + date);
-//     }
-// }catch (Exception e){
-//     e.printStackTrace();
-// }
\ No newline at end of file