used Moose instead of rolling my own runtime traits