Make GenericWindow to handle all common functionality