added gpl and began to implement actual functionality