changed design for performence