implements observer for user interface