added some common models and refactored some utilities