it seems that using mutexes in callbacks is a big no no