(define-structure surflet surflet-interface
  (open surflets
	surflets/my-input-fields
	scheme-with-scsh)
  (begin

    (define (make-nibble-input-fields)
      (let ((checkboxes (list (make-annotated-checkbox 8)
			      (make-annotated-checkbox 4)
			      (make-annotated-checkbox 2)
			      (make-annotated-checkbox 1))))
	(make-multi-input-field
	 #f "nibble-input"
	 (lambda (input-field bindings)
	   (let loop ((sum 0)
		      (checkboxes checkboxes))
	     (if (null? checkboxes)
		 sum
		 (loop (+ sum (or (input-field-value (car checkboxes) 
						     bindings)
				  0))
		       (cdr checkboxes)))))
	 '()
	 (lambda (ignore)
	   checkboxes))))

    (define nibble-input-field (make-nibble-input-fields))

    (define (main req)
      (let* ((req (send-html/suspend
		   (lambda (new-url)
		     `(html (title "Nibble Input Widget")
			    (body 
			     (h1 "Nibble Input Widget")
			     (p "Enter your nibble (msb left):")
			     (surflet-form ,new-url
					   ,nibble-input-field
					   ,(make-submit-button)))))))
	     (bindings (get-bindings req))
	     (number (input-field-value nibble-input-field bindings)))
	(send-html
	 `(html (title "Result")
		(body 
		 (h2 "Result")
		 (p "You've entered " ,number "."))))))
    ))