Many many changes, new features, clean up