requires the fileutils library