target.gen wrapper for more flexibility/reusability