Atomic now takes an optional lock parameter
Refactored Observers to use Atomic instead of raw locks