updated models again to support crazy relationships