almost finished (requires proofreading)