Add xfindOrElse and refactor