added listener events
added piping and createBody function