changed API to allow the this operator, combined navigation functions into a nav object, added done function to exit callback.