fixed d ouble loop optimisation