added functionality for varying data outputs