input should be pipe compatable