various fixes
diff --git a/hooks/sentry/README.md b/hooks/sentry/README.md
index bf0e950..ba64ed4 100644
--- a/hooks/sentry/README.md
+++ b/hooks/sentry/README.md
@@ -1,12 +1,15 @@
 # Sentry Hook for Logrus <img src="http://i.imgur.com/hTeVwmJ.png" width="40" height="40" alt=":walrus:" class="emoji" title=":walrus:" />
 
-[Sentry](https://getsentry.com) provides both self-hosted and hostes solutions for exception tracking.
-Both client and server are [open source](https://github.com/getsentry/sentry).
+[Sentry](https://getsentry.com) provides both self-hosted and hosted
+solutions for exception tracking.
+Both client and server are
+[open source](https://github.com/getsentry/sentry).
 
 ## Usage
 
-Every sentry application defined on the server gets a different [DNS](https://www.getsentry.com/docs/). In the example below replace `YOUR_DSN` with the one created for your application.
-
+Every sentry application defined on the server gets a different
+[DSN](https://www.getsentry.com/docs/). In the example below replace
+`YOUR_DSN` with the one created for your application.
 
 ```go
 import (
@@ -27,3 +30,13 @@
   }
 }
 ```
+
+## Special fields
+
+Some logrus fields have a special meaning in this hook,
+these are server_name and logger.
+When logs are sent to sentry these fields are treated differently.
+- server_name (also known as hostname) is the name of the server which
+is logging the event (hostname.example.com)
+- logger is the part of the application which is logging the event.
+In go this usually means setting it to the name of the package.
diff --git a/hooks/sentry/sentry.go b/hooks/sentry/sentry.go
index 74e8bbe..392601e 100644
--- a/hooks/sentry/sentry.go
+++ b/hooks/sentry/sentry.go
@@ -35,21 +35,18 @@
 
 // SentryHook delivers logs to a sentry server.
 type SentryHook struct {
-	// DSN for this application
-	// Modifications to this field after the call to NewSentryHook have no effect
-	DSN string
-
 	client *raven.Client
 	levels []logrus.Level
 }
 
-// NewSentryHook creates a hook to be added to an instance of logger and initializes the raven client.
+// NewSentryHook creates a hook to be added to an instance of logger
+// and initializes the raven client.
 func NewSentryHook(DSN string, levels []logrus.Level) (*SentryHook, error) {
 	client, err := raven.NewClient(DSN, nil)
 	if err != nil {
 		return nil, err
 	}
-	return &SentryHook{DSN, client, levels}, nil
+	return &SentryHook{client, levels}, nil
 }
 
 // Called when an event should be sent to sentry
@@ -74,8 +71,8 @@
 	}
 	packet.Extra = map[string]interface{}(d)
 
-	_, errCh := hook.client.Capture(packet, nil)
-	return <-errCh
+	hook.client.Capture(packet, nil)
+	return nil
 }
 
 // Levels returns the available logging levels.
diff --git a/hooks/sentry/sentry_test.go b/hooks/sentry/sentry_test.go
index 747d75f..45f18d1 100644
--- a/hooks/sentry/sentry_test.go
+++ b/hooks/sentry/sentry_test.go
@@ -25,7 +25,7 @@
 	return l
 }
 
-func getTestDSN(t *testing.T) (string, <-chan *raven.Packet, func()) {
+func WithTestDSN(t *testing.T, tf func(string, <-chan *raven.Packet)) {
 	pch := make(chan *raven.Packet, 1)
 	s := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
 		defer req.Body.Close()
@@ -38,56 +38,60 @@
 
 		pch <- p
 	}))
+	defer s.Close()
 
 	fragments := strings.SplitN(s.URL, "://", 2)
-	dsn := "%s://public:secret@%s/sentry/project-id"
-
-	return fmt.Sprintf(dsn, fragments[0], fragments[1]), pch, s.Close
+	dsn := fmt.Sprintf(
+		"%s://public:secret@%s/sentry/project-id",
+		fragments[0],
+		fragments[1],
+	)
+	tf(dsn, pch)
 }
 
 func TestSpecialFields(t *testing.T) {
-	logger := getTestLogger()
-	dsn, pch, closeFn := getTestDSN(t)
-	defer closeFn()
+	WithTestDSN(t, func(dsn string, pch <-chan *raven.Packet) {
+		logger := getTestLogger()
 
-	hook, err := NewSentryHook(dsn, []logrus.Level{
-		logrus.ErrorLevel,
+		hook, err := NewSentryHook(dsn, []logrus.Level{
+			logrus.ErrorLevel,
+		})
+
+		if err != nil {
+			t.Fatal(err.Error())
+		}
+		logger.Hooks.Add(hook)
+		logger.WithFields(logrus.Fields{
+			"server_name": server_name,
+			"logger":      logger_name,
+		}).Error(message)
+
+		packet := <-pch
+		if packet.Logger != logger_name {
+			t.Errorf("logger should have been %s, was %s", logger_name, packet.Logger)
+		}
+
+		if packet.ServerName != server_name {
+			t.Errorf("server_name should have been %s, was %s", server_name, packet.ServerName)
+		}
 	})
-
-	if err != nil {
-		t.Fatal(err.Error())
-	}
-	logger.Hooks.Add(hook)
-	logger.WithFields(logrus.Fields{
-		"server_name": server_name,
-		"logger":      logger_name,
-	}).Error(message)
-
-	packet := <-pch
-	if packet.Logger != logger_name {
-		t.Errorf("logger should have been %s, was %s", logger_name, packet.Logger)
-	}
-
-	if packet.ServerName != server_name {
-		t.Errorf("server_name should have been %s, was %s", server_name, packet.ServerName)
-	}
 }
 
 func TestSentryHandler(t *testing.T) {
-	logger := getTestLogger()
-	dsn, pch, closeFn := getTestDSN(t)
-	defer closeFn()
-	hook, err := NewSentryHook(dsn, []logrus.Level{
-		logrus.ErrorLevel,
-	})
-	if err != nil {
-		t.Fatal(err.Error())
-	}
-	logger.Hooks.Add(hook)
+	WithTestDSN(t, func(dsn string, pch <-chan *raven.Packet) {
+		logger := getTestLogger()
+		hook, err := NewSentryHook(dsn, []logrus.Level{
+			logrus.ErrorLevel,
+		})
+		if err != nil {
+			t.Fatal(err.Error())
+		}
+		logger.Hooks.Add(hook)
 
-	logger.Error(message)
-	packet := <-pch
-	if packet.Message != message {
-		t.Errorf("message should have been %s, was %s", message, packet.Message)
-	}
+		logger.Error(message)
+		packet := <-pch
+		if packet.Message != message {
+			t.Errorf("message should have been %s, was %s", message, packet.Message)
+		}
+	})
 }