Then many different specific parameters for different types KSP and  PC could be put inside this classes for configuration. With the present structure,  if a new KSP or type is added, one can only  added four lines like 
```
   pt_pc_spec = pt_pc->get_child_optional("amg");
    if(pt_pc_spec)
    {
        PETScPC_AMG_Option pc_opt(*pt_pc_spec);
        setPC_Option(pc_opt);
    }  
```
in the constructor, while create a new struc. By this way, the source code keeps concise and easy to be extended.