lot of changes, see changelog