add subscription functionality