added code dumped from protege