move identification code outside of task

This allows easier testing, as loading the task requires thread usage.
no more dictionary match