- refactor our http call to easily construct more api methods
- make the Client Interface and Action types be polymorphic
- this requires the main application keeping an Action constructor
in the ClientAction, so we can later know what type to decode
(this is a bit weird I'm not gonna lie but it works)