diff --git a/cmd/test_program.go b/cmd/test_program.go
index 2fa43f2..06ec8b5 100644
--- a/cmd/test_program.go
+++ b/cmd/test_program.go
@@ -1,12 +1,12 @@
 package main
 
 import (
-	"io/ioutil"
-	"os"
-	"github.com/pelletier/go-toml"
 	"encoding/json"
 	"fmt"
+	"github.com/pelletier/go-toml"
+	"io/ioutil"
 	"log"
+	"os"
 	"time"
 )
 
@@ -40,7 +40,7 @@
 		return typed
 	case *toml.TomlTree:
 		return translate((map[string]interface{})(*orig))
-  case []*toml.TomlTree:
+	case []*toml.TomlTree:
 		typed := make([]map[string]interface{}, len(orig))
 		for i, v := range orig {
 			typed[i] = translate(v).(map[string]interface{})
diff --git a/lexer.go b/lexer.go
index a995a02..6b9311c 100644
--- a/lexer.go
+++ b/lexer.go
@@ -419,7 +419,7 @@
 			return lexVoid
 		} else if l.peek() == '[' {
 			return l.errorf("group name cannot contain ']'")
-    }
+		}
 
 		if l.next() == eof {
 			break
@@ -440,7 +440,7 @@
 			return lexVoid
 		} else if l.peek() == '[' {
 			return l.errorf("group name cannot contain ']'")
-    }
+		}
 
 		if l.next() == eof {
 			break
diff --git a/toml.go b/toml.go
index b5b0d57..a7918ba 100644
--- a/toml.go
+++ b/toml.go
@@ -64,16 +64,16 @@
 		if !exists {
 			return nil
 		}
-    switch node := (*subtree)[intermediate_key].(type) {
-    case *TomlTree:
-      subtree = node
-    case []*TomlTree:
-      // go to most recent element
-      if len(node) == 0 {
-        return nil //(*subtree)[intermediate_key] = append(node, &TomlTree{})
-      }
-      subtree = node[len(node)-1]
-    }
+		switch node := (*subtree)[intermediate_key].(type) {
+		case *TomlTree:
+			subtree = node
+		case []*TomlTree:
+			// go to most recent element
+			if len(node) == 0 {
+				return nil //(*subtree)[intermediate_key] = append(node, &TomlTree{})
+			}
+			subtree = node[len(node)-1]
+		}
 	}
 	return (*subtree)[keys[len(keys)-1]]
 }
@@ -102,16 +102,16 @@
 			var new_tree TomlTree = make(TomlTree)
 			(*subtree)[intermediate_key] = &new_tree
 		}
-    switch node := (*subtree)[intermediate_key].(type) {
-    case *TomlTree:
-      subtree = node
-    case []*TomlTree:
-      // go to most recent element
-      if len(node) == 0 {
-        (*subtree)[intermediate_key] = append(node, &TomlTree{})
-      }
-      subtree = node[len(node)-1]
-    }
+		switch node := (*subtree)[intermediate_key].(type) {
+		case *TomlTree:
+			subtree = node
+		case []*TomlTree:
+			// go to most recent element
+			if len(node) == 0 {
+				(*subtree)[intermediate_key] = append(node, &TomlTree{})
+			}
+			subtree = node[len(node)-1]
+		}
 	}
 	(*subtree)[keys[len(keys)-1]] = value
 }
