refactor around readahead