slowly moving, still not actually using prototypes