refactor
update
use weakreference to hold the view