fixed generic types / cleaned code / structured code