The ouroboros programming environment