implemented max_size=
internals using array
updated bench