working on abstract and generic uri classes
ignore, todo