if this supposed to be reusable class please add appropriate comment