turned definition into getter
added memoization for view model getters

it'd be nice to have this abstracted via something like Python's
decorators, but that's not how Ruby works (without complex magic anyway)
fixed code style, improved documentation