draft impl for case classes with options, not finished