put active/passive implementations in there own file