an i2c_controller as generic as possible for a larger utility and simply to understand for people who want to use it