fixing some bugs, simplification improvement
ignore
ignore
ignore