add input filter and add volatile variable
add master controller for constructing purpose