observer pattern for sound implementation