packaged the source and split out into different files