add helper & fix bugs