The problem has been covered recently on this page