interface generation added