add Web library + tests