Got abstraction working and implemented.