diff --git a/init.go b/init.go
index 0a04525..3d2461a 100644
--- a/init.go
+++ b/init.go
@@ -8,25 +8,24 @@
 )
 
 const (
-	configPollInterval        = "apigeesync_poll_interval"
-	configProxyServerBaseURI  = "apigeesync_proxy_server_base"
-	configSnapServerBaseURI   = "apigeesync_snapshot_server_base"
+	configPollInterval = "apigeesync_poll_interval"
+	configProxyServerBaseURI = "apigeesync_proxy_server_base"
+	configSnapServerBaseURI = "apigeesync_snapshot_server_base"
 	configChangeServerBaseURI = "apigeesync_change_server_base"
-	configConsumerKey         = "apigeesync_consumer_key"
-	configConsumerSecret      = "apigeesync_consumer_secret"
-	configApidClusterId       = "apigeesync_cluster_id"
-	configSnapshotProtocol    = "apigeesync_snapshot_proto"
-	configName                = "apigeesync_instance_name"
-	ApigeeSyncEventSelector   = "ApigeeSync"
+	configConsumerKey = "apigeesync_consumer_key"
+	configConsumerSecret = "apigeesync_consumer_secret"
+	configApidClusterId = "apigeesync_cluster_id"
+	configSnapshotProtocol = "apigeesync_snapshot_proto"
+	configName = "apigeesync_instance_name"
+	ApigeeSyncEventSelector = "ApigeeSync"
 )
 
 var (
-	log               apid.LogService
-	config            apid.ConfigService
-	data              apid.DataService
-	events            apid.EventsService
-
-	apidInfo	  apidInstanceInfo
+	log apid.LogService
+	config apid.ConfigService
+	data apid.DataService
+	events apid.EventsService
+	apidInfo apidInstanceInfo
 	apidPluginDetails string
 )
 
@@ -43,21 +42,27 @@
 	apid.RegisterPlugin(initPlugin)
 }
 
+func InitDefaults(configService apid.ConfigService) {
+	configService.SetDefault(configPollInterval, 120)
+	name, errh := os.Hostname()
+	if (errh != nil) && (len(configService.GetString(configName)) == 0) {
+		log.Errorf("Not able to get hostname for kernel. Please set '%s' property in config", configName)
+		name = "Undefined"
+	}
+	configService.SetDefault(configName, name)
+	log.Debugf("Using %s as display name", configService.GetString(configName))
+}
+
+func SetLogger(logger apid.LogService)  {
+	log = logger
+}
+
 func initPlugin(services apid.Services) (apid.PluginData, error) {
-	log = services.Log().ForModule("apigeeSync")
+	SetLogger(services.Log().ForModule("apigeeSync"));
 	log.Debug("start init")
 
 	config = services.Config()
-	config.SetDefault(configPollInterval, 120)
-	log.Infof("Setting defaults")
-	{
-		name, errh := os.Hostname()
-		if errh != nil & config.GetString(configName) == nil {
-			panic(fmt.Errorf("Not able to get hostname for kernel. Please set '%s' property in config",configName))
-		}
-		log.Infof("Hostname reported by kernel : %s", name)
-		config.SetDefault(configName, name)
-	}
+	InitDefaults(config);
 
 	data = services.Data()
 	events = services.Events()
diff --git a/init_test.go b/init_test.go
new file mode 100644
index 0000000..c00a1a2
--- /dev/null
+++ b/init_test.go
@@ -0,0 +1,31 @@
+package apidApigeeSync_test;
+
+import (
+	"testing"
+	"github.com/30x/apid"
+	"github.com/30x/apidApigeeSync"
+	"github.com/30x/apid/config"
+	"github.com/30x/apid/logger"
+	"os"
+)
+
+func TestInitDefaultsDefaultHostname(t *testing.T) {
+	var cs apid.ConfigService
+	cs = config.GetConfig()
+	apidApigeeSync.SetLogger(logger.NewLogger("init_test.go","DEBUG"))
+	apidApigeeSync.InitDefaults(cs)
+	name, _ := os.Hostname()
+	if cs.Get("apigeesync_instance_name") != name {
+		t.Errorf("got %s, expected %s", cs.Get("apigeesync_instance_name"),name)
+	}
+}
+func TestInitDefaultsNameFromFile(t *testing.T) {
+	var cs apid.ConfigService
+	cs = config.GetConfig()
+	cs.Set("apigeesync_instance_name","myname")
+	apidApigeeSync.SetLogger(logger.NewLogger("init_test.go","DEBUG"))
+	apidApigeeSync.InitDefaults(cs)
+	if cs.Get("apigeesync_instance_name") != "myname" {
+		t.Errorf("got %s, expected %s", cs.Get("apigeesync_instance_name"),"myname")
+	}
+}
diff --git a/pluginData.go b/pluginData.go
index ef93e2e..a470c1c 100644
--- a/pluginData.go
+++ b/pluginData.go
@@ -4,8 +4,8 @@
 
 var pluginData = apid.PluginData{
 	Name:    "apidApigeeSync",
-	Version: "0.0.2",
+	Version: "0.0.3",
 	ExtraData: map[string]interface{}{
-		"schemaVersion": "0.0.2",
+		"schemaVersion": "0.0.3",
 	},
 }
