fix todos: backtracking and `maybe'