pushing part 1, almost done