transaction refactor: view (primarily) + model & controller