implement private member