finished basic testing framework