Dedicated to Tom
will probably need to reorganize file/class structure at somepoint. works for now