design pattern: singleton.