fleshed out model classes
use reader and writer in same class