My best effort, didn't finish the last part...