separated the auxiliary methods