Types are now checked against allowed types for property.
More refactoring and better arrangement between traits.