try to avoid crash if getMostConfidentContext returns nil when using the default context option
use @syncronized(self) over locks