Argument type checking, constructor and basic return type checks