Factorization
Add required field support
Add abstract method parse() missing
Update comments