better solution structure