i'm going to rewrite this whole POS