remove trailing whitespace
add EntryBox widget
drop protected fields.
the real implementation should define these. the exact fields
required varies depending on how the UI is designed.
EntryBox should expose a function for getting the data it holds