add more tests, add subscription functionality