move record_participation into alternative model
minor refactoring
use setbit/getbit/bitcount instead of a hash. fix related tests