Abstract models into separate lib for easy reuse.