layout tentatively finished, requires testing