Version 3.3, less nested loops, more callbacks