main tasks complete, need to implement ~view model preservation