added untested stack implementation