what I'm doing is heavily inpsired by chez scheme's ftypes (though not a 1:1 copy) but I gotta say I find https://github.com/cisco/ChezScheme/blob/main/s/ftype.ss to be some of the hardest to understand code I've ever tried to read so I'm trying to make my code as understandable as possible.