BIG UPDATE (80% working)