Working version, still needs string supplements