uploading first design pattern: Observer