create the undo stack using DI