Some abstraction added.