assignment impl