finished generic stack