initial version, most of it is here now it needs to be put together right