[#60746198] refactor to support container types

we need to support more than just the builtin types
this is a step towards that goal, by refactoring
we will be able to more cleanly add in new type
support