implement print