add Noncopyable
detach Noncopyable
detach Singleton and implement dead reference detection