probably an order function, needs quickcheck