This is not a intent of reinvent the wheel, this is just a repository for academic purpose.