add evaluate_runtime abstract method to Function and extract all logic of runtime evaluation to each subclass