add lock to emitwithcallback (due to merge conflicts), address comments
diff --git a/apid.go b/apid.go
index 4392b8f..6e49337 100644
--- a/apid.go
+++ b/apid.go
@@ -9,7 +9,7 @@
 const (
 	SystemEventsSelector  EventSelector = "system event"
 	ShutdownEventSelector EventSelector = "shutdown event"
-	ShutdownTimeout       int           = 10
+	ShutdownTimeout       time.Duration = time.Duration(10) * time.Second
 )
 
 var (
@@ -88,7 +88,7 @@
 			}
 		}
 		return errors.New("Emit() problem: wrong event delivered")
-	case <-time.After(time.Duration(ShutdownTimeout) * time.Second):
+	case <-time.After(ShutdownTimeout):
 		return errors.New("Shutdown timeout")
 	}
 }
diff --git a/events/event_manager.go b/events/event_manager.go
index b98089e..7d7c69f 100644
--- a/events/event_manager.go
+++ b/events/event_manager.go
@@ -39,7 +39,12 @@
 	}
 
 	em.Listen(apid.EventDeliveredSelector, handler)
-	if !em.dispatchers[selector].Send(event) {
+
+	em.Lock()
+	dispatch := em.dispatchers[selector]
+	em.Unlock()
+
+	if !dispatch.Send(event) {
 		em.sendDelivered(selector, event, 0) // in case of no dispatcher
 	}
 }
diff --git a/events/events_test.go b/events/events_test.go
index e1099c1..8c338b6 100644
--- a/events/events_test.go
+++ b/events/events_test.go
@@ -9,7 +9,6 @@
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
 
-	"sync/atomic"
 	"fmt"
 	"strconv"
 )