Note that there exist at least 7 ways how to do it so, if you really want to implement a new method, it should cover all of them: