Improved abstractions. Should be easier to maintain and to add new functionalities.