diff --git a/step_1.rkt b/step_1.rkt
new file mode 100644
index 0000000000000000000000000000000000000000..b5663f72a914a0f97411b3dad939790d16c230b5
--- /dev/null
+++ b/step_1.rkt
@@ -0,0 +1,33 @@
+#lang r5rs
+
+(define (point x y)
+  (define (setx value)
+    (set! x value))
+  (define (add point)
+    (list (+ x (point 'getx)) (+ y (point '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 "ERROR"))))
+  self)
+
+(display "coucou")
+
+(define p1 (point 1 2))
+(define p2 (point 3 4))
+(display (p1 'getx))
+(newline)
+(display (p1 'gety))
+(newline)
+(display (p1 'type))
+(newline)
+(display (p1 'info))
+(newline)
+((p1 'setx!) 5)
+(display (p1 'getx))
+(newline)
+(display ((p1 'add) p2))