Refactored Observer a bit