cleanup via implicit conversions