Refactor
Add features