NCGMonad.getFileId potentially very inefficient
I am not sure how much getFileId is called but each time a new file is encountered, a call to sizeUFM is made to compute the next free id. sizeUFM has to traverse the whole map.
It would be better to store a counter which indicates the next available identifier.