eventually ill get around to testing some of this code