functionally complete. needs tweaking for clarity.