Finally Implemented
Final version.