add more impl from lua