Moved several variables into $self and refactored outcome reading into separate methods