Add subscription model and tests