cleaner public interface and fix option value to be string