Finished except for: (1) unknown bugs, (2) documentation, (3) Code-cleaning & Optimization