write ::push and ::put