Solution by Jeffrey "japhy" Pinyan