//why does this need to return the model at all? the model isn't altered //and would already be in scope for whatever is calling this method public static void GetSearchResults(SearchModel model) { List <ResultModel> results = new List <ResultModel>(); try { using (SqlConnection conn = new SqlConnection("connection string")) { conn.Open(); using (SqlCommand cmd = AdoBase.GetSqlCommand(model.SqlCommandName, conn)) { //this will mutate the object, so you don't need a return type. I'd suggest refactoring this further. model.BuildSqlCommand(cmd); using (SqlDataReader reader = cmd.ExecuteReader()) { //your code sample wasn't returning this, but maybe you intended to? BuildResultSet(reader); } } } } catch (Exception ex) { throw ex; } }