version 2 window abstraction