simplify / cleanup implementation to use .call and explict args instead of arguments and .apply
add test for when no options passed