exposed registration function