fix1
fix2
fix3
fix4
fix5
fix6
fix7
fix8
fix9
fix10
fix11
fix12
fix13
fix14
fix15
fix16
fix17'
all version 2