diff --git a/doc/intro.md b/doc/intro.md
index 2a2a4ec..0e67dcf 100644
--- a/doc/intro.md
+++ b/doc/intro.md
@@ -1,3 +1,32 @@
-# Introduction to propeller
+# Introduction to Propeller
 
 TODO: write [great documentation](http://jacobian.org/writing/what-to-write/)
+
+
+
+
+# Simplification
+
+To use Propeller's auto-simplification system, simply include the following four command line arguments when running a problem:
+
+```clojure
+:simplification? true
+```
+Toggle auto-simplification
+```clojure
+:simplification-k 4
+``` 
+This is the upper bound for elements deleted from the plushy every step. Every step, a number in $[1, k]$ of elements is deleted from the plushy representation of the solution.
+```clojure
+:simplification-steps 1000 
+```
+Number of simplification steps to perform
+```clojure
+:simplification-verbose? true 
+```
+whether or not to output simplification info into the output of the evolutionary run.
+The output with verbose adds the following lines to the output:
+```clojure
+{:start-plushy-length 42, :k 4}
+{:final-plushy-length 13, :final-plushy (:in1 :in1 :integer_quot :in1 :in1 :exec_dup :in1 :integer_mult close :exec_dup :integer_add 1 :integer_add)}
+```
\ No newline at end of file
diff --git a/src/propeller/gp.cljc b/src/propeller/gp.cljc
index 3c89f00..72ec5af 100644
--- a/src/propeller/gp.cljc
+++ b/src/propeller/gp.cljc
@@ -60,8 +60,8 @@
         (do (prn {:success-generation generation})
             (prn {:total-test-error
                   (:total-error (error-function argmap (:testing-data argmap) best-individual))})
-            (if (:simplification? argmap)
-              (let [simplified-plushy (simplification/auto-simplify-plushy argmap (:plushy best-individual) (:simplification-steps argmap) error-function (:training-data argmap) (:simplification-k argmap) (:simplification-verbose? argmap))]
+            (when (:simplification? argmap)
+              (let [simplified-plushy (simplification/auto-simplify-plushy (:plushy best-individual) error-function argmap)]
                 (prn {:total-test-error-simplified (:total-error (error-function argmap (:testing-data argmap) (hash-map :plushy simplified-plushy)))}))))
         ;;
         (>= generation max-generations)
diff --git a/src/propeller/simplification.cljc b/src/propeller/simplification.cljc
index fbd47b1..f896e38 100644
--- a/src/propeller/simplification.cljc
+++ b/src/propeller/simplification.cljc
@@ -13,7 +13,7 @@
   "deletes the values at given set of indices"
   [indices plushy]
   (let [sorted-indices (sort > indices)]
-    (keep-indexed #(if (not (some #{%1} sorted-indices)) %2) plushy)))
+    (keep-indexed #(when (not (some #{%1} sorted-indices)) %2) plushy)))
 
 (defn delete-k-random
   [k plushy]
@@ -21,13 +21,13 @@
 
 (defn auto-simplify-plushy
   "naive auto-simplification"
-  [argmap plushy steps error-function training-data k verbose?]
-  (if verbose? (prn {:start-plushy-length (count plushy) :k k}))
+  [plushy error-function {:keys [simplification-steps training-data simplification-k simplification-verbose?] :as argmap}]
+  (when simplification-verbose? (prn {:start-plushy-length (count plushy) :k simplification-k}))
   (let [initial-errors (:errors (error-function argmap training-data {:plushy plushy}))]
     (loop [step 0 curr-plushy plushy]
-      (if (< steps step)
-        (do (if verbose? (prn {:final-plushy-length (count curr-plushy) :final-plushy curr-plushy})) curr-plushy)
-        (let [new-plushy (delete-k-random (rand-int k) curr-plushy)
+      (if (< simplification-steps step)
+        (do (when simplification-verbose? (prn {:final-plushy-length (count curr-plushy) :final-plushy curr-plushy})) curr-plushy)
+        (let [new-plushy (delete-k-random (rand-int simplification-k) curr-plushy)
               new-plushy-errors (:errors (error-function argmap training-data {:plushy new-plushy}))
               new-equal? (= new-plushy-errors initial-errors)]
           (recur (inc step)
diff --git a/test/propeller/utils_test.cljc b/test/propeller/utils_test.cljc
index e450a38..f8b4567 100644
--- a/test/propeller/utils_test.cljc
+++ b/test/propeller/utils_test.cljc
@@ -71,8 +71,8 @@
 
 (t/testing "auto-simplify-plushy"
   (t/testing "should handle having an empty plushy"
-    (t/is (= (s/auto-simplify-plushy {} '() 100 (fn [argmap data plushy] 0) {} 3 false) '())))
+    (t/is (= (s/auto-simplify-plushy '() (fn [argmap data plushy] 0) {:simplification-steps 100 :simplification-k 4 :simplification-verbose? false}) '())))
   (let [plushy '(:exec_dup 1 :integer_add close :in1 :integer_add 0 :in1 :in1 :integer_mult :integer_add)]
         (t/testing "should decrease size of plushy that always has perfect scores"
-              (t/is (< (count (s/auto-simplify-plushy {} plushy 5 (fn [argmap data plushy] 0) {} 3 false)) (count plushy)))
-              (t/is (< (count (s/auto-simplify-plushy {} plushy 1 (fn [argmap data plushy] 0) {} 10 false)) (count plushy))))))
\ No newline at end of file
+              (t/is (< (count (s/auto-simplify-plushy plushy (fn [argmap data plushy] 0) {:simplification-steps 100 :simplification-k 4 :simplification-verbose? false})) (count plushy)))
+              (t/is (< (count (s/auto-simplify-plushy plushy (fn [argmap data plushy] 0) {:simplification-steps 100 :simplification-k 10 :simplification-verbose? false})) (count plushy))))))
\ No newline at end of file