inital working version for review

@jarv @feanil 
since self.dry_run is always passed into this maybe just default it to None and use self.dry_run in the function as the default?