Fix #5

Signed-off-by: Yeechan Lu <wz.bluesnow@gmail.com>
Fix #1

Signed-off-by: Yeechan Lu <wz.bluesnow@gmail.com>
Fix #7

Signed-off-by: Yeechan Lu <wz.bluesnow@gmail.com>
Fix #3

Signed-off-by: Yeechan Lu <wz.bluesnow@gmail.com>