big work...lots of changes