abstract printer added