version 1.1 not completely done yet:(