A Programming Paradigm based on Agent-Oriented Abstractions