add in Solti's solution for Observer and Template method