Hi sven so I studied your code and I got a solution working. Tx for your support. Now I do not know if what I did is correct. registerRoutes teapot GET: '/' -> '<h1>My game collection</h1>'; output: #html; GET: '/games' -> [ :reg | (self htmlListFor: self games)]; output: #html; GET: '/findDetails/<title>' -> [ :req | collector findMatchingTitle: (req at: #title) ]; output: #json; GET: '/find/<title>' -> [ :req | TeaResponse ok body: (self htmlListFor: (collector findMatchingTitle: (req at: #title))) ]; output: #html; GET: '/add' -> [ :req | self edit: req ]; GET: '/create' -> (Send message: #create: to: self) So I used /add to enter the parameter and pass them to the /create page. in the /create I created the new item and I could redirect to game list (I imagine that this is possible). So now I see tht I could merge add and create into a single page (as you did) and edit: request | title page | title := 'Enter a title'. page := ZnHtmlOutputStream streamContents: [ :html | html page: 'Create game named' do: [ html tag: #form attributes: #(#action 'create' 'accept-charset' 'utf-8' #method #GET) do: [ html str: 'Title'; space; tag: #input attributes: {#type. #input. #name. #input. #value. title}; space; tag: #input attributes: #(#type #submit) ] ] ]. ^ ZnResponse new statusLine: ZnStatusLine ok; entity: (ZnEntity html: page); yourself create: aRequest collector addGame: (GameItem new title: (aRequest at: #input)). ^ ZnResponse new statusLine: ZnStatusLine ok; entity: (ZnEntity html: 'Created!'); yourself