factor exp kinds out of checkers
abstract over different checkers using TypeCheck interface
move bottom-up checkers in separate package