Broken up into proper go project layout