A method of operating a web application stored on a server using circuitry (42, 52), the method comprising: establishing, using a parent browser window corresponding to an application page, a channel for sending and receiving messages; loading, using the parent window, a layout from the application page specifying display information for at least one child window (30b-30f) and the parent window, the display information including location information and at least one component for each of the at least one child window and the parent window; positioning, using the circuitry, the parent window based on the location information for the parent window specified in the display information; loading, using the parent window, the at least one component for the parent window specified in the display information; and for each of the at least one child window having display information specified in the layout: opening, using the circuitry, a new browser window as a child window; receiving channel information with the child window; causing the child window to join the channel using the channel information; positioning the child window, using the circuitry, based on the location information for the child window specified in the display information; and loading, using the child window, the at least one component for the child window specified in the display information; wherein the channel for sending and receiving messages is for sending and receiving messages between the browser windows. establishing, using a parent browser window corresponding to an application page, a channel for sending and receiving messages; loading, using the parent window, a layout from the application page specifying display information for at least one child window (30b-30f) and the parent window, the display information including location information and at least one component for each of the at least one child window and the parent window; positioning, using the circuitry, the parent window based on the location information for the parent window specified in the display information; loading, using the parent window, the at least one component for the parent window specified in the display information; and for each of the at least one child window having display information specified in the layout: opening, using the circuitry, a new browser window as a child window; receiving channel information with the child window; causing the child window to join the channel using the channel information; positioning the child window, using the circuitry, based on the location information for the child window specified in the display information; and loading, using the child window, the at least one component for the child window specified in the display information; opening, using the circuitry, a new browser window as a child window; receiving channel information with the child window; causing the child window to join the channel using the channel information; positioning the child window, using the circuitry, based on the location information for the child window specified in the display information; and loading, using the child window, the at least one component for the child window specified in the display information; wherein the channel for sending and receiving messages is for sending and receiving messages between the browser windows.