function process_matches(self)
    local matches = find_matches(self)
    if #matches > 0 then
        -- Award points for this match
        self.combo = self.combo + 1
        local points = #matches * 10 * self.combo
        msg.post("/hud", "add_score",
            { value = points })

        -- Remove, drop, then check again
        remove_and_drop(self, matches)
        -- Use timer to wait for drop animation
        self.chain_timer = 0.3
        self.waiting_for_chain = true
    else
        self.combo = 0
        self.processing = false
    end
end