This is an implementation of a research paper I came across