kinda working typecheck-once approach

not sure we can push this all the way