private member functions