Project for self education.In progress.