Code still in progress; Feel free to contribute !!!