revision 3, more functionality