Add most classes from original assignment re-written in Groovy