diff --git a/stack.c b/stack.c
index 6d898cbc6b6ace5d36f7928529c21cb3b1d0b630..cd5584e904f31c0127780a2d058f3ec0ba119b57 100644
--- a/stack.c
+++ b/stack.c
@@ -1,6 +1,3 @@
-#ifndef STACK_H_INCLUDED
-#define STACK_H_INCLUDED
-
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
@@ -12,37 +9,25 @@ void die(char* msg) {
   exit(EXIT_FAILURE);
 }
 
-/* *** Strukturen *********************************************************** */
-
-/**@brief Struktur des Stacks.
- */
 typedef struct {
   size_t size;
   size_t capacity;
   int* data;
 } IntStack;
 
-/* *** öffentliche Schnittstelle ******************************************** */
-
-/**@brief Initialisiert einen neuen Stack.
- * @param self  der zu initialisierende Stack
- * @return 0, falls keine Fehler bei der Initialisierung aufgetreten sind,
- *      != 0, ansonsten
- */
 int stackInit(IntStack *self) {
   self->size = 0;
   self->capacity = INTSTACK_INIT_CAPACITY;
   self->data = malloc(self->capacity * sizeof(int));
+
   return self->data ? 0 : -1;
 }
 
-/**@brief Gibt den Stack und alle assoziierten Strukturen frei.
- * NOTE: Caller frees IntStack*, since in test there are automatic
- *       storage duration non malloc'ed unfreeable IntStacks 
- * @param self  der Stack
- */
+// NOTE: Caller frees IntStack*, since in test there are automatic
+//       storage duration non malloc'ed unfreeable IntStacks 
 void stackRelease(IntStack *self) {
-  free(self->data);
+  if (self)
+    free(self->data);
 }
 
 void stackResize(IntStack *self, size_t new_capacity) {
@@ -50,12 +35,8 @@ void stackResize(IntStack *self, size_t new_capacity) {
   self->data = realloc(self->data, self->capacity * sizeof(int));
 }
 
-/**@brief Legt einen Wert auf den intstack.
- * @param self  der intstack
- * @param i     der Wert
- */
 void stackPush(IntStack *self, int i) {
-  self->size++;
+  self->size += 1;
 
   if (self->size >= self->capacity)
     stackResize(self, 2 * self->capacity);
@@ -63,10 +44,6 @@ void stackPush(IntStack *self, int i) {
   self->data[self->size - 1] = i;
 }
 
-/**@brief Gibt das oberste Element des Stacks zurück.
- * @param self  der Stack
- * @return das oberste Element
- */
 int stackTop(const IntStack *self) {
   if (!self->size) {
     stackRelease((IntStack *) self);
@@ -76,10 +53,6 @@ int stackTop(const IntStack *self) {
   return self->data[self->size - 1];
 }
 
-/**@brief Entfernt und liefert das oberste Element des Stacks.
- * @param self  der Stack
- * @return das oberste Element
- */
 int stackPop(IntStack *self) {
   if (!self->size) {
     stackRelease(self);
@@ -94,29 +67,19 @@ int stackPop(IntStack *self) {
   return self->data[self->size];
 }
 
-/**@brief Gibt zurück, ob der Stack leer ist.
- * @param self  der Stack
- * @return 0, falls nicht leer,
-        != 0, falls leer
- */
 int stackIsEmpty(const IntStack *self) {
   return self->size == 0;
 }
 
-/**@brief Gibt den Inhalt des Stacks beginnend mit dem obersten Element auf der
- * Standardausgabe aus.
- * @param self  der Stack
- */
 void stackPrint(const IntStack *self) {
   printf("top(");
 
-  for (int i = (int) self->size - 1; i > 0; i--)
-    printf("%d, ", self->data[i]);
+  if (self->size) {
+    for (size_t i = self->size - 1; i > 0; i--)
+      printf("%d, ", self->data[i]);
 
-  if (self->size > 0)
     printf("%d", self->data[0]);
+  }
 
   printf(")bot\n");
 }
-
-#endif /* STACK_H_INCLUDED */