observer pattern completed removed notifyClient()