cancellation working
got pass by reference working
adding command pattern