proper hierarchy implemented