it typechecks, but doesn't work yet