Refactor add contestants

Don't merge yet!

This is only up for initial peer review. Only limited testing has been done (and passes), but more testing is required.