update to use decorators