extends #6, more organization