improve internal methods