refactor for schema design pattern, plus add normalizer