acts_as_hookable
replace collections by multiple models