register() is now for late initialization only, and __set() is for direct initialization only