change vow to return the vow constructor