add register function