I should try to implement something like this, to see how hard it would be (I think not too much, but I might overlook something).