After hours of work I finally finished this