bugfix and impl SelfAssign