more type safe