This might be a dumb question but why only call limit() when the query is dirty? Is it to avoid executing the query twice?