Add stack implimentation and tests