some changes for performane