bunch of changes and a lot of features...