implement basic registration