Fixes issue 638. We'll write some tests but we need to get issue 642 done first. Some other refactoring in same style as previous commits added too.
Fixes issue 638. We'll write some tests but we need to get issue 642 done first. Some other refactoring in same style as previous commits added too.

cfwheels/cfwheels,cfwheels/cfwheels,cfwheels/cfwheels