Refactored a little more
Added solution and refactored solution
Added driver code
Added reflection