support multi-arg push! and unshift!