Convert anonymous class to static inner class.
Close #7.
Close #13.
Close #14.
Close #15.
Close #16.
Merge remote-tracking branch 'origin/master'