hmm we could do this better with a task/function