added ifndef check in impl.h header