Augmented functionality and upgraded dependencies

- upgraded the dependencies
- upgraded to use normal annotations
- augmented the URL matching and substitution
- added JUnit tests