Abstraction

Not even close to ready