Refactored view models and composition