not sure if this should be named "selector"