centralize error msgs, make all callbacks async