Fixed #2, #3, #5