cleanup
add BaseTypedModel with typed model support