implemented new initialization interface