refactored for simplicity
2.0.0