Note that this is also being discussed in this topic. Not exactly the same problem, but there is significant overlap.