That's really interesting and helpful — thanks. I've heard CS people talk about abstraction a lot, but hadn't realized they were using the term in the way you describe.
I might try doing this as a learning project. Can you offer any advice as to what those abstractions are? I'd appreciate some advice to avoid the "going back" part.
reply