tons of changes and template implementations.. not sure what I am doing,
but learning alot.