a lot code, layout and string changes