Made lots of changes, need to fix.