diff --git a/libs/middlewares/query.js b/libs/middlewares/query.js
new file mode 100644
index 0000000000000000000000000000000000000000..d14958dc43f6610cb3aa502ec6491db6a8095899
--- /dev/null
+++ b/libs/middlewares/query.js
@@ -0,0 +1,16 @@
+var libs = process.cwd() + '/libs/'
+var conn = require(libs + 'db/monet')
+var log = require(libs + 'log')(module)
+
+function query(req, res, next) {
+    log.debug(req.query)
+    conn.query(
+        req.query.text, req.query.values, true
+    ).then(function(result) {
+        // log.debug(result)
+        req.result = result
+        next()
+    })
+}
+
+module.exports = query
diff --git a/libs/routes/cities.js b/libs/routes/cities.js
index 6a2220497fa90a47200fce15b0879c8cd5ed90c8..10d7ceef4cc7ceebad2577ae12fcea5b8d91019a 100644
--- a/libs/routes/cities.js
+++ b/libs/routes/cities.js
@@ -1,6 +1,7 @@
 var express = require('express')
 var xml = require('js2xmlparser')
 var router = express.Router()
+var squel = require('squel')
 
 var libs = process.cwd() + '/libs/'
 
@@ -8,59 +9,34 @@ var log = require(libs + 'log')(module)
 var config = require(libs + 'config')
 
 var conn = require(libs + 'db/monet')
+var query = require(libs + 'middlewares/query')
 
 function response(req, res) {
-  if (req.query.format === 'csv') {
-    res.csv(req.result.data)
-  } else if (req.query.format === 'xml') {
-    res.send(xml("result", JSON.stringify({city: req.result.data})))
-  }
-  else {
-    res.json({
-        result: req.result.data
-    })
-  }
+    if (req.query.format === 'csv') {
+        res.csv(req.result.data)
+    } else if (req.query.format === 'xml') {
+        res.send(xml("result", JSON.stringify({city: req.result.data})))
+    }
+    else {
+        res.json({
+            result: req.result.data
+        })
+    }
 }
 
-router.get('/', function(req, res) {
-  conn.query(
-    'SELECT * FROM municipios', true
-  ).then(function(result) {
-    log.debug(result)
-    req.result = result
-    response(req, res)
-  })
+router.get('/', function(req, res, next) {
+    req.query = squel.select().from('municipios').toParam()
+    next()
+}, query, response)
 
-})
+router.get('/:id', function(req, res, next) {
+    req.query = squel.select().from('municipios').where('pk_municipio_id=?', parseInt(req.params.id, 10)).toParam()
+    next()
+}, query, response)
 
-router.get('/:id', function(req, res) {
-  conn.query(
-    'SELECT * FROM municipios WHERE pk_municipio_id='+req.params.id, true
-  ).then(function(result) {
-    log.debug(result)
-    req.result = result
-    response(req, res)
-  })
-})
-
-router.get('/ibge/:id', function(req, res) {
-  conn.query(
-    'SELECT * FROM municipios WHERE codigo_ibge='+req.params.id, true
-  ).then(function(result) {
-    log.debug(result)
-    req.result = result
-    response(req, res)
-  })
-})
-
-router.get('/state/:id', function(req, res) {
-  conn.query(
-    'SELECT * FROM municipios WHERE fk_estado_id='+req.params.id, true
-  ).then(function(result) {
-    log.debug(result)
-    req.result = result
-    response(req, res)
-  })
-})
+router.get('/state/:id', function(req, res, next) {
+    req.query = squel.select().from('municipios').where('fk_estado_id=?', parseInt(req.params.id, 10)).toParam()
+    next()
+}, query, response)
 
 module.exports = router
diff --git a/libs/routes/regions.js b/libs/routes/regions.js
index 6c85fccb8a8b856769ccb46ca9fb821c81bab460..cfbbcd946572a8a30ebf00536ce9cbf544226f7f 100644
--- a/libs/routes/regions.js
+++ b/libs/routes/regions.js
@@ -1,6 +1,7 @@
 var express = require('express')
 var xml = require('js2xmlparser')
 var router = express.Router()
+var squel = require('squel')
 
 var libs = process.cwd() + '/libs/'
 
@@ -9,37 +10,29 @@ var config = require(libs + 'config')
 
 var conn = require(libs + 'db/monet')
 
+var query = require(libs + 'middlewares/query')
+
 function response(req, res) {
-  if (req.query.format === 'csv') {
-    res.csv(req.result.data)
-  } else if (req.query.format === 'xml') {
-    res.send(xml("result", JSON.stringify({state: req.result.data})))
-  }
-  else {
-    res.json({
-        result: req.result.data
-    })
-  }
+    if (req.query.format === 'csv') {
+        res.csv(req.result.data)
+    } else if (req.query.format === 'xml') {
+        res.send(xml("result", JSON.stringify({state: req.result.data})))
+    }
+    else {
+        res.json({
+            result: req.result.data
+        })
+    }
 }
 
-router.get('/', function(req, res) {
-  conn.query(
-    'SELECT * FROM regioes', true
-  ).then(function(result) {
-    log.debug(result)
-    req.result = result
-    response(req, res)
-  })
-})
-
-router.get('/:id', function(req, res) {
-  conn.query(
-    'SELECT * FROM regioes WHERE pk_regiao_id='+req.params.id, true
-  ).then(function(result) {
-    log.debug(result)
-    req.result = result
-    response(req, res)
-  })
-})
+router.get('/', function(req, res, next) {
+    req.query = squel.select().from('regioes').toParam()
+    next()
+}, query, response)
+
+router.get('/:id', function(req, res, next) {
+    req.query = squel.select().from('regioes').where('pk_regiao_id=?', parseInt(req.params.id, 10)).toParam()
+    next()
+}, query, response)
 
 module.exports = router
diff --git a/libs/routes/states.js b/libs/routes/states.js
index 2192c5377a0e705ad59393dacf46a469491b7ad7..79959ef8fd4a19c3afc3f51328ec737396cb0bbe 100644
--- a/libs/routes/states.js
+++ b/libs/routes/states.js
@@ -1,6 +1,7 @@
 var express = require('express')
 var xml = require('js2xmlparser')
 var router = express.Router()
+var squel = require('squel')
 
 var libs = process.cwd() + '/libs/'
 
@@ -9,47 +10,35 @@ var config = require(libs + 'config')
 
 var conn = require(libs + 'db/monet')
 
+var query = require(libs + 'middlewares/query')
+
 function response(req, res) {
-  if (req.query.format === 'csv') {
-    res.csv(req.result.data)
-  } else if (req.query.format === 'xml') {
-    res.send(xml("result", JSON.stringify({state: req.result.data})))
-  }
-  else {
-    res.json({
-        result: req.result.data
-    })
-  }
+    console.log('respostas :)')
+    if (req.query.format === 'csv') {
+        res.csv(req.result.data)
+    } else if (req.query.format === 'xml') {
+        res.send(xml("result", JSON.stringify({state: req.result.data})))
+    }
+    else {
+        res.json({
+            result: req.result.data
+        })
+    }
 }
 
 router.get('/', function(req, res, next) {
-  conn.query(
-    'SELECT * FROM estados', true
-  ).then(function(result) {
-    log.debug(result)
-    req.result = result
-    response(req, res)
-  })
-})
+    req.query = squel.select().from('estados').toParam()
+    next()
+}, query, response)
 
 router.get('/:id', function(req, res, next) {
-  conn.query(
-    'SELECT * FROM estados WHERE pk_estado_id='+req.params.id, true
-  ).then(function(result) {
-    log.debug(result)
-    req.result = result
-    response(req, res)
-  })
-})
+    req.query = squel.select().from('estados').where('pk_estado_id = ?', parseInt(req.params.id, 10)).toParam()
+    next()
+}, query, response)
 
 router.get('/region/:id', function(req, res, next) {
-  conn.query(
-    'SELECT * FROM estados WHERE fk_regiao_id='+req.params.id, true
-  ).then(function(result) {
-    log.debug(result)
-    req.result = result
-    response(req, res)
-  })
-})
+    req.query = squel.select().from('estados').where('fk_regiao_id = ?', parseInt(req.params.id, 10)).toParam()
+    next()
+}, query, response)
 
 module.exports = router
diff --git a/package.json b/package.json
index 70eae984d543a33a91965143d67790c72924a2f2..c8c186c70762c34e88b90578f4f20a76b7317209 100644
--- a/package.json
+++ b/package.json
@@ -22,6 +22,7 @@
     "method-override": "^2.3.3",
     "monetdb": "^1.1.2",
     "nconf": "^0.6.x",
+    "squel": "^5.4.2",
     "winston": "^2.2.0"
   },
   "license": "MIT",
diff --git a/test/test.js b/test/test.js
index bad774a4dcac019492a55fe957fd4aa8f42f39c4..d6b67ff84daf91c4abcb98e014cd8beee5c5c42f 100644
--- a/test/test.js
+++ b/test/test.js
@@ -139,20 +139,4 @@ describe('request cities', function(){
       })
   });
 
-  it('should list a city by codigo_ibge', function(done){
-    chai.request(server)
-      .get('/api/v1/cities/ibge/1200013')
-      .end(function(err, res){
-        res.should.have.status(200);
-        res.should.be.json;
-        res.body.should.have.property('result');
-        res.body.result.should.be.a('array');
-        res.body.result[0].should.have.property('pk_municipio_id');
-        res.body.result[0].should.have.property('fk_estado_id');
-        res.body.result[0].should.have.property('nome');
-        res.body.result[0].should.have.property('codigo_ibge');
-        done();
-      })
-  });
-
 });