generalize and awesomify design