diff --git a/sqrt.lisp b/sqrt.lisp
index e69de29..0bcd3af 100644
--- a/sqrt.lisp
+++ b/sqrt.lisp
@@ -0,0 +1,5 @@
+(defun sqrt-iter (guess x)
+  (if (good-enough? guess x)
+      guess
+      (sqrt-iter (improve guess x)
+                 x)))
diff --git a/sqrt.lisp b/sqrt.lisp
index e69de29..249536d 100644
--- a/sqrt.lisp
+++ b/sqrt.lisp
@@ -0,0 +1,10 @@
+(defun sqrt-iter (guess x)
+  (if (good-enough? guess x)
+      guess
+      (sqrt-iter (improve guess x)
+                 x)))
+
+(defun improve (guess x)
+  (average guess (/ x guess)))
+
+
diff --git a/sqrt.lisp b/sqrt.lisp
index 249536d..5baee9b 100644
--- a/sqrt.lisp
+++ b/sqrt.lisp
@@ -7,4 +7,6 @@
 (defun improve (guess x)
   (average guess (/ x guess)))

-
+(defun average (x y)
+  (/ (+ x y)
+     2))
diff --git a/sqrt.lisp b/sqrt.lisp
index 5baee9b..75f2709 100644
--- a/sqrt.lisp
+++ b/sqrt.lisp
@@ -10,3 +10,8 @@
 (defun average (x y)
   (/ (+ x y)
      2))
+
+(defun good-enough? (guess x)
+  (< (abs (- (square guess)
+             x))
+     0.001))
diff --git a/sqrt.lisp b/sqrt.lisp
index 75f2709..1442a37 100644
--- a/sqrt.lisp
+++ b/sqrt.lisp
@@ -15,3 +15,6 @@
   (< (abs (- (square guess)
              x))
      0.001))
+
+(defun squre (x)
+  (* x x))
diff --git a/sqrt.lisp b/sqrt.lisp
index 1442a37..b3fb666 100644
--- a/sqrt.lisp
+++ b/sqrt.lisp
@@ -18,3 +18,6 @@

 (defun squre (x)
   (* x x))
+
+(defun sqrt (x)
+  (sqrt-iter 1.0 x))
diff --git a/sqrt.lisp b/sqrt.lisp
index b3fb666..bef1354 100644
--- a/sqrt.lisp
+++ b/sqrt.lisp
@@ -16,7 +16,7 @@
              x))
      0.001))

-(defun squre (x)
+(defun square (x)
   (* x x))

 (defun sqrt (x)