use the brand new noncopyable macro