Lots of changes by jejefcgb