More abstraction. Cleaner now!