abstract stack