Preliminary software structure