cleanup form ast
cleanup ast, add typecheckable interface