diff --git a/@stack/element.m b/@stack/element.m
new file mode 100644
index 0000000000000000000000000000000000000000..9611f925d78a1cda438b12e231c57698e3ac404e
--- /dev/null
+++ b/@stack/element.m
@@ -0,0 +1,4 @@
+function val = element(self)
+  val = self.element;
+end
+
diff --git a/@stack/length.m b/@stack/length.m
index 0aa286ee965f8b5074374f64f1e0997bf21731bc..df08a649989cdf518ed83df08a995d502ca52b97 100644
--- a/@stack/length.m
+++ b/@stack/length.m
@@ -1,9 +1,9 @@
-   function length = length(self)
-      length = 0;
-      node = self.stack_pointer;
-      while ~isempty(node)
-        length = length + 1;
-        node = next(node);
-      end
-    end
+function length = length(self)
+length = 0;
+node = self.stack_pointer;
+while ~isempty(node)
+  length = length + 1;
+  node = next(node);
+end
+end
 
diff --git a/@stack/pop.m b/@stack/pop.m
index 9b647c1c7b9641e815467663162d56be779dc3a5..2b504607369307c4e1a04d4c73222e3779138a4f 100644
--- a/@stack/pop.m
+++ b/@stack/pop.m
@@ -1,4 +1,4 @@
-function element = pop(self)
+function self = pop(self)
 %increase the stack pointer and return 'top' node data
 % usage :
 %   element = pop(stack)
@@ -6,9 +6,9 @@ function element = pop(self)
 % $Id$
 
 if isempty(self.stack_pointer)
-  element = {};
+  self.element = {};
 else
-  element = data(self.stack_pointer);
+  self.element = data(self.stack_pointer);
   self.stack_pointer = next(self.stack_pointer);
 end
 
diff --git a/@stack/push.m b/@stack/push.m
index 71770325dabc4f249293e2c05e47a3191698cca7..883fd06537e44d3d2b0900ca9578105e1af4e8df 100644
--- a/@stack/push.m
+++ b/@stack/push.m
@@ -1,4 +1,4 @@
-  function self = push(self, element)
-      self.stack_pointer = node(element, self.stack_pointer);
-    end
+function self = push(self, element)
+  self.stack_pointer = node(element, self.stack_pointer);
+end
 
diff --git a/@stack/stack.m b/@stack/stack.m
index 0c46a3374798dc6d6326a989f91c9aae573d9aae..76e0118ec591028e8b21e6ba00bf802ad5537065 100644
--- a/@stack/stack.m
+++ b/@stack/stack.m
@@ -4,22 +4,25 @@ function s = stack
 % Last In First Out (LIFO)
 %
 % usage:
-%   q  = stack    - Default constructor, empty stack table
+%   s  = stack    - Default constructor, empty stack table
 %
 % example:
-%   q = stack 
-%   q = push(q, [1:2])
-%   q = push(q, ones(1,5))
-%   element = pop(q)
-%   q = push(q, zeros(1,3))
+%   s = stack 
+%   s = push(q, [1:2])
+%   s = push(q, ones(1,5))
+%   s = pop(s)
+%   e = element(s)
+%   s = push(s, zeros(1,3))
+%   e = top(s)
 %   etc ...
 %
 % $Id$
 
-% copy constructor
+% constructor
 % ----------------
 if nargin == 0  
   self.stack_pointer = {};
+  self.element = {};
 else
   error('stack:stack', 'Invalid arguments.');
 end
diff --git a/@stack/top.m b/@stack/top.m
index 3927b5b0d8e048504cbc1983db2300ce1ddc92d5..09ffb28f069462ffb3570939d25f5f1d1d76ea27 100644
--- a/@stack/top.m
+++ b/@stack/top.m
@@ -1,17 +1,17 @@
-  function element = top(self)
+function element = top(self)
 %return 'top' node
 % usage
 %   data = top(stack)
 
 % $Id: get.m 416 2009-02-13 07:55:41Z jgrelet $
 
-% return object prepared in data 
+% return object prepared in data
 % ------------------------------
 
-      if isempty(self.stack_pointer)
-        element = {};
-      else
-        element = data(self.stack_pointer);
-      end
-    end
+if isempty(self.stack_pointer)
+  element = {};
+else
+  element = data(self.stack_pointer);
+end
+end