added more methods, notably traversals