fix bug, add util functions