RPL (IPv6 Routing Protocol for Low-Power and Lossy Net- works) was developed by IETF (Internet Engineering Task Force) as the protocol for LLNs (low power and lossy networks) that comprise of resource constrained components such as those used in Internet of Things applications. Since then the research community and the industry have come up with many enhancements of RPL aimed at achieving a diverse range of objectives that include better performance under heavy traffic loads, higher throughput, lower packet loss, energy conservation, longer network lifetime, mobility of nodes and enhanced security. This paper presents a review of the various methods proposed to achieve these objectives. A comparative review and a taxonomy of these methods are presented in this paper. We aim to provide valuable insights into RPL and present the foundation for future works.