read refactored