commented out parts not yet tested