Initial code review

Things I'd love to review:
- Generally, if there are any issues with syntax.
- Should I organized the modules better.
- Can I do more abstraction, or should I do less?
- How would you do multithreading?

And anything else you want. Thanks!