Cleaned up `client`, working on `data`

Implementing events in `DataStores`, refactored `client.request()`