making model more generic
refactoring pre/post's