possible mistakes added. should still work