#10
#11
fix #12 and code cleanup.
change to public #7
#13
fix #14
fix NPE #14
refactoring
#15
#16
#16
#16
fix #17
fix #18
#19
#16
fix #20 #21 #22
#8 #16
#16
#10