optimize IO