more structure + some scaladoc