When the dynamic instantiation interface is there, go ahead and use it. Unflattening a flattened object is just much easier. In some cases, you might need the full interface, but definitely think about unflattening an object first.