support auto initialization