Feel free to change the interface if you think it can be improved. For instance, set_value can only be called on input cells, but the interface allows it to be called on compute cells (forcing a runtime check).