simplify and separate decorator for readability
flesh out api