moved header printer to its own class
use ILocation instead of IDevice