Hi, I think it's time for a drawing thread inside app_server. ATM invalidating and drawing is done from almost every thread in app_server. IMHO this is not that good as we do need a lot of locking, and code flow is hard to follow. I propose we have methods like ::Invalidate, ::Redraw, which if executed from another thread than this drawing_thread, automatically send port messages for the requested action. In this thread I think it is better we also execute window manager's code. This thread would wait for input data (mouse events, keyboard events, invalidate_or_redraw_messages) and move/resize/hide/show windows by calling ::Invalidate and :: Redraw() methods. Comments, suggestions? Thanks, Adi.