restructered a bit, first fix First class