registration implementation