still not working perfectly - procedural version