refactor location generation by zone config