replace abstract accessor with an interface