change IdGenerator to singleton to get it prepared from program
beginning