corrected purpose class
added abilities decide purpose with constants