Completely rewritten from ground up