register functions complete