another incremental step towards prototype
now uses prototype