cb imperative searn working
imperative searn should be fully functional, beginning to remove original searn