update readme + code + tests