some clean ups
add quark substructure function