added typecase
multiple declarations in a let are syntactic sugar for nested lets
add dispatch + static dispatch