internal state should be private
first stab at exclusions