Homework 1 with improvements.
Stack with improvements