code merge
workable code after merged