added generic type