add image polymophic
refactoring
refactoring
temp
lots of update