implicit conversion, refactored