added TODO; about to do major rewrite