Last part credits to acookiegod