refactor new and _fields