added singleton to make everyones life much easier, and this is really really kewl