separating targets from previews to hopefully avoid unnecessary
get_target operations