use implicit classes so we don't need reflective method calls