made mark_update referentially transparent
changed how targets are stored, they are values data not sess data