Added a v3 taking into account feedback from v2.