generating interface seems to work for the most part