add some typecheck