added different output modes