additional class hierarchy; fiddle with scanner