add abstract dice and tests