Plugin initialization info
diff --git a/apid.go b/apid.go
index 3086699..9ada144 100644
--- a/apid.go
+++ b/apid.go
@@ -10,7 +10,6 @@
 
 var (
 	APIDInitializedEvent    = systemEvent{"apid initialized"}
-	PluginsInitializedEvent = systemEvent{"plugins initialized"}
 	APIListeningEvent       = systemEvent{"api listening"}
 
 	pluginInitFuncs []PluginInitFunc
@@ -25,7 +24,7 @@
 	Log() LogService
 }
 
-type PluginInitFunc func(Services) error
+type PluginInitFunc func(Services) (PluginData, error)
 
 // passed Services can be a factory - makes copies and maintains returned references
 // eg. apid.Initialize(factory.DefaultServicesFactory())
@@ -51,13 +50,17 @@
 func InitializePlugins() {
 	log := Log()
 	log.Debugf("Initializing plugins...")
-	for _, p := range pluginInitFuncs {
-		err := p(services)
+	pie := PluginsInitializedEvent{
+		Description: "plugins initialized",
+	}
+	for _, pif := range pluginInitFuncs {
+		pluginData, err := pif(services)
 		if err != nil {
 			log.Panicf("Error initializing plugin: %s", err)
 		}
+		pie.Plugins = append(pie.Plugins, pluginData)
 	}
-	Events().Emit(SystemEventsSelector, PluginsInitializedEvent)
+	Events().Emit(SystemEventsSelector, pie)
 	log.Debugf("done initializing plugins")
 }
 
diff --git a/events/events_test.go b/events/events_test.go
index ab7a3bf..804d1f9 100644
--- a/events/events_test.go
+++ b/events/events_test.go
@@ -252,6 +252,41 @@
 		em.Emit("selector2", e2)
 		em.Emit("selector1", e1)
 	})
+
+	It("should publish PluginsInitialized event", func(done Done) {
+		xData := make(map[string]interface{})
+		xData["schemaVersion"] = "1.2.3"
+		p := func(s apid.Services) (pd apid.PluginData, err error) {
+			pd = apid.PluginData{
+				Name: "test plugin",
+				Version: "1.0.0",
+				ExtraData: xData,
+			}
+			return
+		}
+		apid.RegisterPlugin(p)
+
+		h := func(event apid.Event) {
+			defer GinkgoRecover()
+
+			if pie, ok := event.(apid.PluginsInitializedEvent); ok {
+
+				apid.Events().Close()
+
+				Expect(len(pie.Plugins)).Should(Equal(1))
+				p := pie.Plugins[0]
+				Expect(p.Name).To(Equal("test plugin"))
+				Expect(p.Version).To(Equal("1.0.0"))
+				Expect(p.ExtraData["schemaVersion"]).To(Equal("1.2.3"))
+
+				close(done)
+			}
+		}
+		apid.Events().ListenFunc(apid.SystemEventsSelector, h)
+
+		apid.InitializePlugins()
+	})
+
 })
 
 type test_handler struct {
diff --git a/events_service.go b/events_service.go
index 9f56f93..0e249c9 100644
--- a/events_service.go
+++ b/events_service.go
@@ -41,3 +41,14 @@
 	Event       Event
 	Count       int
 }
+
+type PluginsInitializedEvent struct {
+	Description string
+	Plugins []PluginData
+}
+
+type PluginData struct {
+	Name string
+	Version string
+	ExtraData map[string]interface{}
+}