re-organize classes