split sender & reciever
refactor packages