add internal methods