simple layout, routing, submit logic