There's something broken in defstruct that keeps coming back to bite