integrate/refactor city generation stuff