return target if it doesn't exist