A 'just for fun' project i rewrite as i learn new material.