separated topdown and bottom up typechecker