more work on traverse