Towards reusable building blocks for agent-based modelling and theory development