implemented assignment