added base observer