added core algorithms