updated grammer: survey tag is now optional, made option an abstract class and removed optionImpl