WIP
WIP before refactoring persist_fields
Refactoring persist_fields
Further Refactoring