make the maybe type work

when finding the type, it now figures out the type based on what's in
the structure, or the function parameters.

it doesn't actually work correctly, the pattern is there to make it work