more strictness, less implicit conversions