Rough, but functional prototype :D:D:D:D:D:D:D:D