add singleton, play with transform
add singleton, referenced_count, and component