tidied up focus traversal