new register logic