Re factored as a class

- Fix passing of optional parameters
- Added update_channel() method
- Added ability to return different data formats