organized into functions