source: adding basic traversal functionality