ai message loop is less messy now imo