Functionality abstract added on top