task working correctly, needs final pass and tests