incomplete untested code, stopping point