Add metadata to FieldImpl instead + refactor

[1720]