a lot of changes and improvments