refactor & new features