More generic push! closes #1