refactor + add some comments