Moved observer into its own class