added a periodic worker

The periodic worker will call a function periodically based on an input duration
In this case I feel like we should be checking it runs more than once? Might well be covered further down, this is all stream-of-consciousness