More implementation than you can shake a stick at