Refactoring again and add tests