favor to return a smart pointer in ai/actions recall_unit