added a non-admin register function