lay groundwork for better way to match enum variants (still in progress)