Implement all the features

Features implemented:
- [X] All