- [ ] write the thread control block struct - [ ] write the thread struct - [ ] write a priority based hard real-time scheduler - [ ] write methods to schedule threads in, and for threads to yield (schedule themselves out) - [ ] mock the scheduler (for easier testing) - [ ] write tests to ensure that mutliple threads can run at the same time - [ ] write tests to ensure that higher priority threads are not interrupted by lower priority threads