some change to singleton