code verbessert und vervollständigt