rewriting everything to fit my needs