use integer index as object link pointer
amend: minor refact
refact: change detection logic unset props