current solution must clear ref in dispose by hand