looks like the loop/calling mechanism could use some work