Design Through Abstraction