diff --git a/README.md b/README.md
index 88d2134..44da570 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,8 @@
 # Alice 
 
+[![GoDoc](https://godoc.org/github.com/golang/gddo?status.svg)](http://godoc.org/github.com/justinas/alice)
 [![Build Status](https://travis-ci.org/justinas/alice.svg?branch=master)](https://travis-ci.org/justinas/alice)
+[![Coverage](http://gocover.io/_badge/github.com/justinas/alice)](http://gocover.io/github.com/justinas/alice)
 
 Alice provides a convenient way to chain 
 your HTTP middleware functions and the app handler.
diff --git a/chain.go b/chain.go
index 8adf0c0..7bb0e6f 100644
--- a/chain.go
+++ b/chain.go
@@ -43,18 +43,15 @@
 //
 // Then() treats nil as http.DefaultServeMux.
 func (c Chain) Then(h http.Handler) http.Handler {
-	var final http.Handler
-	if h != nil {
-		final = h
-	} else {
-		final = http.DefaultServeMux
+	if h == nil {
+		h = http.DefaultServeMux
 	}
 
 	for i := len(c.constructors) - 1; i >= 0; i-- {
-		final = c.constructors[i](final)
+		h = c.constructors[i](h)
 	}
 
-	return final
+	return h
 }
 
 // ThenFunc works identically to Then, but takes
@@ -86,8 +83,7 @@
 	copy(newCons, c.constructors)
 	copy(newCons[len(c.constructors):], constructors)
 
-	newChain := New(newCons...)
-	return newChain
+	return New(newCons...)
 }
 
 // Extend extends a chain by adding the specified chain
diff --git a/chain_test.go b/chain_test.go
index 49c0470..97e0ff1 100644
--- a/chain_test.go
+++ b/chain_test.go
@@ -69,6 +69,16 @@
 	assert.Equal(t, chained, http.DefaultServeMux)
 }
 
+func TestThenFuncConstructsHandlerFunc(t *testing.T) {
+	fn := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+		w.WriteHeader(200)
+	})
+	chained := New().ThenFunc(fn)
+	rec := httptest.NewRecorder()
+	chained.ServeHTTP(rec, (*http.Request)(nil))
+	assert.Equal(t, 200, rec.Code)
+}
+
 func TestThenOrdersHandlersRight(t *testing.T) {
 	t1 := tagMiddleware("t1\n")
 	t2 := tagMiddleware("t2\n")
