Basic implementation. Seems to be off.