reorganize to use guard and custom _source dir