A Working version, it is not executable yet