add FileIterator for wrapping file handler
fully refactored