Google summer of code project 2014. See http://www.google-melange.com/gsoc/project/details/google/gsoc2014/nadeeshaan/5657382461898752