begin Target refactor