add type checking