basically understand how reflect works
Rewrite done; basic test