almost there. can't cast to interface... need to find another way