First commit of semi-completed library