@SuppressWarnings("unchecked")
    public ArrayList<HashMap<String, String>> select(ArrayList<String> tables, ArrayList<String> fields, HashMap conditions, ArrayList<String> selection) {
        String tablesString = "`" + StringUtils.join(tables, "`, `") + "`";
        String fieldsString = fields == null ? "*" : "`" + StringUtils.join(fields, "`, `") + "`";
        String whereString = conditions == null ? "" : " WHERE " + StringUtils.join(conditions.keySet(), " = ? AND ") + " = ?";
        String selectionString = selection == null ? "" : " " + StringUtils.join(selection, " ");

        String selectSQL = "SELECT " + fieldsString + " FROM " + tablesString + whereString + selectionString + ";";

        ArrayList<String> queryValues = conditions == null ? null : new ArrayList<String>(conditions.values());

        return connection.execute(selectSQL, queryValues, true);
    }