split push into two modules

one only containing sender and one with just the model so that we can reuse it