implementing patches from vponomarev

* move cleanup inside Service.
* add .read()