assignment implementation