Refactored Core to use strong types in annotations rather than strings, which are prone to error creep