pushing the source online so I can show I know a bit of cpp as well