move subscription related functionality to subscription model