push
first crack at implementation