todo: pending on assignment operator