move BitSetPerceptSource out of AtomSource into its own class