diff --git a/common/src/main/java/ctbrec/event/EventHandler.java b/common/src/main/java/ctbrec/event/EventHandler.java
index 11e26f8b..6c329382 100644
--- a/common/src/main/java/ctbrec/event/EventHandler.java
+++ b/common/src/main/java/ctbrec/event/EventHandler.java
@@ -1,5 +1,14 @@
 package ctbrec.event;
 
+import com.google.common.eventbus.Subscribe;
+import ctbrec.Config;
+import ctbrec.event.Event.Type;
+import ctbrec.event.EventHandlerConfiguration.ActionConfiguration;
+import ctbrec.event.EventHandlerConfiguration.PredicateConfiguration;
+import lombok.EqualsAndHashCode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -7,16 +16,7 @@ import java.util.List;
 import java.util.function.Consumer;
 import java.util.function.Predicate;
 
-import ctbrec.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.eventbus.Subscribe;
-
-import ctbrec.event.Event.Type;
-import ctbrec.event.EventHandlerConfiguration.ActionConfiguration;
-import ctbrec.event.EventHandlerConfiguration.PredicateConfiguration;
-
+@EqualsAndHashCode(of = "id")
 public class EventHandler {
     private static final Logger LOG = LoggerFactory.getLogger(EventHandler.class);
 
@@ -36,17 +36,13 @@ public class EventHandler {
         return id;
     }
 
-    @SafeVarargs
     public EventHandler(Action action, EventPredicate... predicates) {
         this(Collections.singletonList(action), predicates);
     }
 
-    @SafeVarargs
     public EventHandler(List<Action> actions, EventPredicate... predicates) {
         this.actions = actions;
-        for (EventPredicate predicate : predicates) {
-            this.predicates.add(predicate);
-        }
+        Collections.addAll(this.predicates, predicates);
     }
 
     @Subscribe
@@ -59,85 +55,59 @@ public class EventHandler {
         try {
             boolean matches = true;
             for (Predicate<Event> predicate : predicates) {
-                if(!predicate.test(evt)) {
+                if (!predicate.test(evt)) {
                     matches = false;
                 }
             }
-            if(matches) {
+            if (matches) {
                 for (Consumer<Event> action : actions) {
                     action.accept(evt);
                 }
             }
-        } catch(Exception e) {
+        } catch (Exception e) {
             LOG.error("Error while processing event", e);
         }
     }
 
     private List<EventPredicate> createPredicates(EventHandlerConfiguration config) {
-        List<EventPredicate> predicates = new ArrayList<>(config.getPredicates().size());
+        List<EventPredicate> predicateList = new ArrayList<>(config.getPredicates().size());
         for (PredicateConfiguration pc : config.getPredicates()) {
 
             try {
                 @SuppressWarnings("unchecked")
                 Class<EventPredicate> cls = (Class<EventPredicate>) Class.forName(pc.getType());
-                if(cls == null) {
+                if (cls == null) {
                     LOG.warn("Ignoring unknown action {}", cls);
                     continue;
                 }
                 EventPredicate predicate = cls.getDeclaredConstructor().newInstance();
                 predicate.configure(pc);
-                predicates.add(predicate);
-            } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
+                predicateList.add(predicate);
+            } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | IllegalArgumentException | InvocationTargetException |
+                     NoSuchMethodException | SecurityException e) {
                 LOG.warn("Error while creating action {} {}", pc.getType(), pc.getConfiguration(), e);
             }
         }
-        return predicates;
+        return predicateList;
     }
 
     private List<Action> createActions(EventHandlerConfiguration config) {
-        List<Action> actions = new ArrayList<>(config.getActions().size());
+        List<Action> actionList = new ArrayList<>(config.getActions().size());
         for (ActionConfiguration ac : config.getActions()) {
             try {
                 @SuppressWarnings("unchecked")
                 Class<Action> cls = (Class<Action>) Class.forName(ac.getType());
-                if(cls == null) {
+                if (cls == null) {
                     LOG.warn("Ignoring unknown action {}", cls);
                     continue;
                 }
                 Action action = cls.getDeclaredConstructor().newInstance();
                 action.configure(ac);
-                actions.add(action);
+                actionList.add(action);
             } catch (Exception e) {
                 LOG.warn("Error while creating action {} {}", ac.getType(), ac.getConfiguration(), e);
             }
         }
-        return actions;
+        return actionList;
     }
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((id == null) ? 0 : id.hashCode());
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj)
-            return true;
-        if (obj == null)
-            return false;
-        if (getClass() != obj.getClass())
-            return false;
-        EventHandler other = (EventHandler) obj;
-        if (id == null) {
-            if (other.id != null)
-                return false;
-        } else if (!id.equals(other.id))
-            return false;
-        return true;
-    }
-
-
 }