new version. new say implementation, needs more work though