refactor type conversion