Nice problem to be solved and very interesting approaches. Maybe I may add this one (not by me, but by Martin Siegrist @martinsiegrist):