diff --git a/src/main/java/MyStack.java b/src/main/java/MyStack.java
index c237f86277f43040bfcd4b68b1afa08d9806ebc1..d1a485d781842c310fa3769b2f39dbbc8e7ea7d2 100644
--- a/src/main/java/MyStack.java
+++ b/src/main/java/MyStack.java
@@ -1,17 +1,33 @@
 public class MyStack {
 
-    private Object element;
+    private Node top;
 
     public MyStack() {
         super();
-        element = null;
+        top = new Node(null, null);
     }
 
     public int size() {
-        return (element == null) ? 0 : 1;
+        return top.getHeight();
     }
 
     public void push(Object element) {
-        this.element = element;
+        this.top = new Node(element, top);
+    }
+
+    private class Node {
+        private Object payload;
+        private int height;
+        private Node previous;
+
+        Node(Object payload, Node oldTop) {
+            this.payload = payload;
+            this.previous = oldTop;
+            height = (oldTop == null) ? 0 : oldTop.height+1;
+        }
+
+        Object getPayload() {return payload;}
+        int getHeight() {return height;}
+        Node getPrevious() {return previous;}
     }
 }