made many changes. cleaned up the code. added cc4 code. ALOT of TODOs so search for those and implement as needed