first functions complete