more generic parser type
working on typechecking, just comitting before I break everything
finished type inference