added viewmodel builder and business rules