type checking seems decent