add schema
add unit tests