Highly amateur final assignment; but for a few hours of work I can't complain.
No download links available.