added push; some cleanup