Added more abstraction.