Using behaviour ideas to implement clean and reusable code