Huge changes
Almost perfect