improved passing, needs a bit more work