some progress -this is really messy, needs to be redone from ground