restructure and add features to model