support variable args
use metadata to hold onto a mecha's data instead of directly on the instance
change start and stop to be multi methods