This method is very long and has multiple responsibilities; Please mark V2-related part for deletion later on