Cleaner implementation with options classes