Should we generalize this concept and create a nice and clean interface for it ?