first printing implementation