refactor & add concurrency package