initial version created by Jack