VOYEUR: Split ThreadResource into it's own file