Completely redone version of Decorator Function, with annotation