Abstracted the behaviour