resolve #114, #118, #122