added more type and test