More boolean validations, better factory testing and minor cleanup
Add Metadata class