add observers implemented