Use prepare as an abstract method
Doc cleanup
Make weighted collections handle associative and non-associative arrays