add printer
add tests