added observer + sleep