adds three ways to add observers