First pass separating model from view (issue #2). Does not compile.