Lots of changes, simplify and use properties