lots of refactoring in AR key components