randy refactor doublepoints to permitpoints and generics