Refactor StructOps to avoid bringing in ObjectOps and StringOps by default