wrote everything. (doesn't compile yet)