Abstracted Cell to create different implementations by context + refactored accordingly