refact, add window concepts