Refactor: use ViewModel and Bootstrap framework