fix casts
add type IR generator