fixes #1,fixes #2,fixes #3,fixes #4