diff --git a/cmd/yaml.go b/cmd/yaml.go
index ce95911..b44e054 100644
--- a/cmd/yaml.go
+++ b/cmd/yaml.go
@@ -107,13 +107,6 @@
 	if len(cfg.Name) > 0 {
 		rootMap["package"] = yaml.Scalar(cfg.Name)
 	}
-	if cfg.InCommand != "" {
-		rootMap["incmd"] = yaml.Scalar(cfg.InCommand)
-	}
-
-	if cfg.Flatten == true {
-		rootMap["flatten"] = yaml.Scalar("true")
-	}
 
 	if overwrite {
 		// Imports
@@ -285,10 +278,6 @@
 	Name       string
 	Imports    Dependencies
 	DevImports Dependencies
-	// InCommand is the default shell command run to start a 'glide in'
-	// session.
-	InCommand string
-	Flatten   bool
 }
 
 // HasDependency returns true if the given name is listed as an import or dev import.
@@ -340,14 +329,6 @@
 		conf.Name = "main"
 	}
 
-	// Allow the user to override the behavior of `glide in`.
-	if incmd, ok := vals["incmd"]; ok {
-		conf.InCommand = incmd.(yaml.Scalar).String()
-	}
-
-	// Package level Flatten
-	conf.Flatten = boolOrDefault("flatten", vals, false)
-
 	conf.Imports = make(Dependencies, 0, 1)
 	if imp, ok := vals["import"]; ok {
 		imports, ok := imp.(yaml.List)
@@ -398,12 +379,6 @@
 	cfg := make(map[string]yaml.Node, 5)
 
 	cfg["package"] = yaml.Scalar(c.Name)
-	if len(c.InCommand) > 0 {
-		cfg["incmd"] = yaml.Scalar(c.InCommand)
-	}
-	if c.Flatten == true {
-		cfg["flatten"] = yaml.Scalar("true")
-	}
 
 	imps := make([]yaml.Node, len(c.Imports))
 	for i, imp := range c.Imports {
@@ -432,8 +407,6 @@
 	VcsType                          string
 	Subpackages, Arch, Os            []string
 	UpdateAsVendored                 bool
-	Flatten                          bool
-	Flattened                        bool
 }
 
 // DependencyFromYaml creates a dependency from a yaml.Node.
@@ -451,7 +424,6 @@
 		Subpackages: valOrList("subpackages", pkg),
 		Arch:        valOrList("arch", pkg),
 		Os:          valOrList("os", pkg),
-		Flatten:     boolOrDefault("flatten", pkg, false),
 	}
 
 	// Continue to support the legacy ref property for the version. To remove
@@ -560,12 +532,6 @@
 		dep["os"] = yaml.List(oses)
 	}
 
-	// Note, the yaml package we use sorts strings of scalars so flatten
-	// will always be the top item.
-	if d.Flatten == true {
-		dep["flatten"] = yaml.Scalar("true")
-	}
-
 	return yaml.Map(dep)
 }
 
@@ -601,10 +567,6 @@
 			if !reflect.DeepEqual(dep.Os, val.Os) || !reflect.DeepEqual(dep.Arch, val.Arch) {
 				return d, fmt.Errorf("Import %s repeated with different OS or Architecture filtering", dep.Name)
 			}
-			if dep.Flatten != val.Flatten {
-				Warn("Import %s repeated in glide.yaml with differing flatten values. Flattening.", dep.Name)
-				checked[dep.Name].Flatten = true
-			}
 			checked[dep.Name].Subpackages = stringArrayDeDupe(checked[dep.Name].Subpackages, dep.Subpackages...)
 		}
 	}
diff --git a/cmd/yaml_test.go b/cmd/yaml_test.go
index 4c7d67f..46564ee 100644
--- a/cmd/yaml_test.go
+++ b/cmd/yaml_test.go
@@ -11,7 +11,6 @@
 import:
   - package: github.com/kylelemons/go-gypsy
     subpackages: yaml
-    flatten: true
   # Intentionally left spaces at end of next line.
   - package: github.com/Masterminds/convert
     repo: git@github.com:Masterminds/convert.git
@@ -24,7 +23,6 @@
     arch:
       - i386
       - arm
-    flatten: true
   - package: github.com/Masterminds/structable
 
 devimport:
@@ -117,10 +115,6 @@
 		t.Errorf("Got wrong reference.")
 	}
 
-	if imp.Flatten != true {
-		t.Errorf("Expected Flatten: true")
-	}
-
 	if len(cfg.DevImports) != 1 {
 		t.Errorf("Expected one dev import.")
 	}
diff --git a/docs/example-glide.yaml b/docs/example-glide.yaml
index 7b27acc..556df8b 100644
--- a/docs/example-glide.yaml
+++ b/docs/example-glide.yaml
@@ -1,15 +1,6 @@
 # The name of this package.
 package: github.com/Masterminds/glide
 
-# Provide an alternate command to be run on 'glide in'. Normally, a glide in
-# will just spawn a new shell.
-incmd: bash -l
-
-# Any listed import will only be imported once. Effectively preventing vendored
-# packages from importing the same pkg via a glide.yaml file.
-# Defaults to false
-flatten: true
-
 # External dependencies.
 import:
   # Minimal definition
@@ -92,8 +83,3 @@
       - darwin
     arch:
       - amd64
-
-  # If you would like to only include the package once and prevent vendored
-  # packages from including the same package.
-  - package: github.com/awesome/only_once
-    flatten: true
