refactored serializeattributes