various enhancement + some fix