update: smart instantiation