add test and size implementation