create better structure pattern