fixes #1 #2 #4