don't use thread until you know how to use queue/work/callback