Initial support for custom types. Need to add reference evaluation similar to the function evaluation