LAZY implemented

naive strategy take too long, move on to optimised method