Restructure the program and add an optimized version
Add possible to-do list