support for same input and output