Try a implementation of the asawoo architecture with the command design pattern