add persistent undo and ruby plugin