type checking
bounds