diff --git a/alt_exit.go b/alt_exit.go
index 6c354ad..889a504 100644
--- a/alt_exit.go
+++ b/alt_exit.go
@@ -23,38 +23,37 @@
 // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 import (
-"fmt"
-"os"
+	"fmt"
+	"os"
 )
 
 var handlers = []func(){}
 
 func runHandler(handler func()) {
-defer func() {
-if err := recover(); err != nil {
-fmt.Fprintln(os.Stderr, "Error: Logrus exit handler error:", err)
-}
-}()
+	defer func() {
+		if err := recover(); err != nil {
+			fmt.Fprintln(os.Stderr, "Error: Logrus exit handler error:", err)
+		}
+	}()
 
-handler()
+	handler()
 }
 
 func runHandlers() {
-for _, handler := range handlers {
-runHandler(handler)
-}
+	for _, handler := range handlers {
+		runHandler(handler)
+	}
 }
 
 // Exit runs all the Logrus atexit handlers and then terminates the program using os.Exit(code)
 func Exit(code int) {
-runHandlers()
-os.Exit(code)
+	runHandlers()
+	os.Exit(code)
 }
 
 // RegisterExitHandler adds a Logrus atexit handler, call logrus.Exit to invoke
 // all handlers. The handlers will also be invoked when any Fatal log entry is
 // made.
 func RegisterExitHandler(handler func()) {
-handlers = append(handlers, handler)
+	handlers = append(handlers, handler)
 }
-
diff --git a/alt_exit_test.go b/alt_exit_test.go
index 69a3b5c..28aa01c 100644
--- a/alt_exit_test.go
+++ b/alt_exit_test.go
@@ -1,41 +1,41 @@
 package logrus
 
 import (
-"os/exec"
-"testing"
-"io/ioutil"
-"time"
+	"io/ioutil"
+	"os/exec"
+	"testing"
+	"time"
 )
 
 func TestRegister(t *testing.T) {
-current := len(handlers)
-RegisterExitHandler(func() {})
-if len(handlers) != current+1 {
-t.Fatalf("can't add handler")
-}
+	current := len(handlers)
+	RegisterExitHandler(func() {})
+	if len(handlers) != current+1 {
+		t.Fatalf("can't add handler")
+	}
 }
 
 func TestHandler(t *testing.T) {
-gofile := "/tmp/testprog.go"
-if err := ioutil.WriteFile(gofile, testprog, 0666); err != nil {
-t.Fatalf("can't create go file")
-}
+	gofile := "/tmp/testprog.go"
+	if err := ioutil.WriteFile(gofile, testprog, 0666); err != nil {
+		t.Fatalf("can't create go file")
+	}
 
-outfile := "/tmp/testprog.out"
-arg := time.Now().UTC().String()
-err := exec.Command("go", "run", gofile, outfile, arg).Run()
-if err == nil {
-t.Fatalf("completed normally, should have failed")
-}
+	outfile := "/tmp/testprog.out"
+	arg := time.Now().UTC().String()
+	err := exec.Command("go", "run", gofile, outfile, arg).Run()
+	if err == nil {
+		t.Fatalf("completed normally, should have failed")
+	}
 
-data, err := ioutil.ReadFile(outfile)
-if err != nil {
-t.Fatalf("can't read output file %s", outfile)
-}
+	data, err := ioutil.ReadFile(outfile)
+	if err != nil {
+		t.Fatalf("can't read output file %s", outfile)
+	}
 
-if string(data) != arg {
-t.Fatalf("bad data")
-}
+	if string(data) != arg {
+		t.Fatalf("bad data")
+	}
 }
 
 var testprog = []byte(`
@@ -72,4 +72,3 @@
 	logrus.Fatal("Bye bye")
 }
 `)
-
