split out peripheral interfaces to separate classes