This is going to be hard to generalize... And make useable for Jura.... (again, leave it as it is currently, but we should discuss about it quite soon, in order not to make it to complicated to generalize)