Started porting essential classes from Tracey