break things up into multiple files and add a Makefile