Small changes
Rewrote using Reflection