added #idefs to avoid multiple inclusion