I'm a little confused here, why do we need two passes for this?