reorganize reach defs to not do everything in constructor