resolve #16 and #18