Adding handling for primitives, non-primitives, and user-defined types; doesn't handl...