Better abstract classes and monitors