add support for using custom schemas

why final?