abstracted Action into an Interface so that more specific actions can be created
I think this will help a non-go client be created easier too as I can better json each element