re
tidy up core constructor
extracted rotation to own object