diff --git a/step_2.rkt b/step_2.rkt
new file mode 100644
index 0000000000000000000000000000000000000000..adbab249741931324f4a48f55916492b97ea6fe0
--- /dev/null
+++ b/step_2.rkt
@@ -0,0 +1,44 @@
+#lang r5rs
+
+(define (point x y)
+  (define (setx value)
+    (set! x value))
+  (define (add p)
+    (point (+ x (p 'getx)) (+ y (p 'gety))))
+  (define (self m)
+    (cond ((eq? m 'getx) x)
+          ((eq? m 'gety) y)
+          ((eq? m 'type) 'point)
+          ((eq? m 'info) (list (self 'type) (self 'getx) (self 'gety)) )
+          ((eq? m 'setx!) setx )
+          ((eq? m 'add) add)
+          (else (display "Message not understood"))))
+  self)
+
+(define (send p m . args)
+  (if (procedure? p)
+      
+      (cond
+        ((null? args) (p m))
+        ; Checker length args
+        ;((eq? m 'add) (p 'add
+        (else ((p m) (car args) ) )
+        )
+      (display "Inappropriate receiver object") )
+  )
+
+
+
+( define p1 ( point 1 2 ) )
+( define p2 ( point 3 4 ) )
+(display ( send p1 'getx )) ; 1
+(display ( send p1 'gety )) ; 2
+(display ( send p2 'getx )) ; 3
+(display ( send p2 'gety )) ; 4
+;(display ( send p1 'add p2)) ;(4 6)
+(define p (send p1 'add p2))
+(display ( send p 'info )) ; ( p o i n t 4 6)
+
+(send p1 'setx! 5)
+(display (send p1 'getx )) ; r e t u r n s 5
+(display (send 'add 'getx))
\ No newline at end of file