Cleaning up some things by moving layer application to another class
Adding iter fn so we can override it