support different designs