many improvements. not finished