internal operation