push and pop take custom objects