   # anything else is true... although typically a 1 is returned
   # for truths, boolean tests should compare with 0 (falsity) instead of 1
 
-  def compute([ "=" | remaining_input], [y, x | stack], dict) do
+  def compute([ "=" | remaining_input], [y, x | data_stack], loop_stack, dict) do
     out = if y == x, do: 1, else: 0
-    compute(remaining_input, [out | stack], dict)
-  end
-
-  def compute([ "<>" | remaining_input], [y, x | stack], dict) do
+    compute(remaining_input, [out | data_stack], loop_stack, dict)
+  end
+
+  def compute([ "<>" | remaining_input], [y, x | data_stack], loop_stack, dict) do
     out = if y != x, do: 1, else: 0
-    compute(remaining_input, [out | stack], dict)
-  end
-
-  def compute([ "<" | remaining_input], [y, x | stack], dict) do
+    compute(remaining_input, [out | data_stack], loop_stack, dict)
+  end
+
+  def compute([ "<" | remaining_input], [y, x | data_stack], loop_stack, dict) do
     out = if x < y, do: 1, else: 0
-    compute(remaining_input, [out | stack], dict)
-  end
-
-  def compute([ ">" | remaining_input], [y, x | stack], dict) do
+    compute(remaining_input, [out | data_stack], loop_stack, dict)
+  end
+
+  def compute([ ">" | remaining_input], [y, x | data_stack], loop_stack, dict) do
     out = if x > y, do: 1, else: 0
-    compute(remaining_input, [out | stack], dict)
-  end
-
-  def compute([ "and" | remaining_input], [y, x | stack], dict) do
+    compute(remaining_input, [out | data_stack], loop_stack, dict)
+  end
+
+  def compute([ "and" | remaining_input], [y, x | data_stack], loop_stack, dict) do
     out = if ((y != 0) and (x != 0)), do: 1, else: 0
-    compute(remaining_input, [out | stack], dict)
-  end
-
-  def compute([ "or" | remaining_input], [y, x | stack], dict) do
+    compute(remaining_input, [out | data_stack], loop_stack, dict)
+  end
+
+  def compute([ "or" | remaining_input], [y, x | data_stack], loop_stack, dict) do
     out = if ((y != 0) or (x != 0)), do: 1, else: 0
-    compute(remaining_input, [out | stack], dict)
-  end
-
-  def compute([ "not" | remaining_input], [x | stack], dict) do
+    compute(remaining_input, [out | data_stack], loop_stack, dict)
+  end
+
+  def compute([ "not" | remaining_input], [x | data_stack], loop_stack, dict) do
     out = if x == 0, do: 1, else: 0
-    compute(remaining_input, [out | stack], dict)
-  end
-
-  # def compute([ "?" | remaining_input], stack, dict) do
-  #   compute([ "if" | remaining_input], stack, dict)
+    compute(remaining_input, [out | data_stack], loop_stack, dict)
+  end
+
+  # def compute([ "?" | remaining_input], data_stack, loop_stack, dict) do
+  #   compute([ "if" | remaining_input], data_stack, loop_stack, dict)
   # end
 
   # If-Else-Then
   # Note that this is a prefix function!
-  # Usage: test_val is on top of stack. "if <then-clause> else <else-clause> then"
-  # puts then-clause on top of instruction stack if test_val != 0, else-clause if test_val == 0.
-  def compute([ "if" | remaining_input], [x | stack], dict) do
+  # Usage: test_val is on top of data_stack. "if <then-clause> else <else-clause> then"
+  # puts then-clause on top of instruction data_stack if test_val != 0, else-clause if test_val == 0.
+  def compute([ "if" | remaining_input], [x | data_stack], loop_stack, dict) do
     {if_and_possibly_else_clause, ["then" | remaining_input]} = Enum.split_while(remaining_input, fn(ins) -> ins != "then" end)
     {if_clause, else_clause} =
       if Enum.any?(if_and_possibly_else_clause, fn ins -> ins == "else" end) do

    end

    test "rotate top 3 elements of stack up" do # what's "up" on a stack? Assumes the last element of the stack is on the bottom in the minds' eye
      assert RPNForthThing.initialize(~w[ 1 2 3 rot3^ / / ]) == 0.6666666666666666
    end

    test "rotate top 3 elements of stack down" do
      assert RPNForthThing.initialize(~w[ 1 2 3 rot3v / / ]) == 6.0
    end

    # test "rotate entire stack up" do # what's "up" on a stack? Assumes the last element of the stack is on the bottom in the minds' eye

    end

    test "adding 2 numbers" do
      assert RPNForthThing.initialize(~w[1 2 +]) === 3
    end

    test "subtracting 2 numbers" do
