add type check