improve CS0106
split keyword and reference contributor
use interfaces not impl classes