Changed to use multi-pass