added subscription model, with associations and validation