implement own stack type