meets all requirements - needs testing

needs testing