current version with some naming changes (probably).