without some unnecessary functions