Don’t go crazy about abstraction.
Sometimes it’s better to write some code twice than expending two weeks trying to make a fit-all new class with 50 interfaces.
Sometimes you should do that, but for many projects that level of abstraction is not needed.
Probably a similar step from practical effects to computer rendered effects. Gain some, loose some, and best results will probably be gotten with a mixed technique made by professionals who know what they are doing.