break out splicing strategies into different classes for easier testing / coverage and to reduce branching