combine into class<<self