add multi-process support, ui change, code refactor