the caller class should defer to the assignment type classes rather than have hardcoded type logic. (similar to resource module)