1. add result;
2. minor refactor;