gracefully handles empty colletions & dirs