* enhance mvvm