refactored basic action system